Hej
Jag håller på med en uppgift om att skriva ett program där man ska skriva in fem namn i en array med index 5. Efter det skrivs den ut. Efter det blir man erbjuden att ändra värdet på en indexposition.
Jag utmanar mig med att validera inmatningen, så att programmet blir bombsäkert. Jag kanske är helt ute och cyklar med min ansats, säg till mig i så fall och berätta hur jag kan göra i stället.
Jag har problem med sista biten, där man kan trycka på q eller Q för att avsluta programmet, samtidigt som man ska uppge ett tal som ligger inom arrayomfattningen. Utöver det tror jag att programmet kommer fungera som jag önskar...
Tack för er feedback!
Jag håller på med en uppgift om att skriva ett program där man ska skriva in fem namn i en array med index 5. Efter det skrivs den ut. Efter det blir man erbjuden att ändra värdet på en indexposition.
Jag utmanar mig med att validera inmatningen, så att programmet blir bombsäkert. Jag kanske är helt ute och cyklar med min ansats, säg till mig i så fall och berätta hur jag kan göra i stället.
Jag har problem med sista biten, där man kan trycka på q eller Q för att avsluta programmet, samtidigt som man ska uppge ett tal som ligger inom arrayomfattningen. Utöver det tror jag att programmet kommer fungera som jag önskar...
Tack för er feedback!
Kod:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.RegularExpressions; namespace Uppgifter_kap_12_13_14_15 { class Program { static void Main(string[] args) { // Definition av arrayen där namnen ska sparas och variabeln för att spara namnen. string[] names = new string[5]; string name = ""; // Variabeln för att testa om man kommer igenom loopen. bool success = true; // For-loopen där användaren får uppge fem namn. for (int i = 0; i < names.Length; i++) { do { Console.Write("Uppge namn " + (i + 1) + ": "); name = Console.ReadLine(); // Här testas att man slår in ett namn som innehåller endast bokstäver. if (Regex.IsMatch(name, @"^[a-zA-Z]+$")) { names[i] = name; success = false; } else { Console.WriteLine("Du har inte angett ett korrekt namn, testa igen!\n"); success = true; } } while (success); success = true; } Console.WriteLine("\nTryck på valfri knapp för att se de namn som du har angett.\n"); Console.ReadKey(); // Kallar metoden där namnen skrivs ut. PrintArray(names); // Variabler för att identifiera position i index samt det namn som ska införas i stället uppges. int placeInNames = 0; string changedName = ""; // Användaren får slå in namn. do { Console.Write("\nAnge index till det namn som du vill byta ut (om du vill avsluta programmet i stället, tryck på q eller Q):"); var selection = Console.ReadLine(); selection = int.Parse(Console.ReadLine()); // Vid klick på q eller Q stängs programmet. if (selection == "q" || selection == "Q") { Environment.Exit(0); } // Om selection ligger inom arrayens längd sätts success till false och man kommer vidare. else if (selection < names.Length) { success = false; } // Om selection ligger ovanför arrayens längd loopas det och man får försöka igen. else if (selection => names.Length) { Console.WriteLine("Du har angett ett tal som inte finns i arrayen. Ange ett tal mellan 0 och " + (names.Length - 1) + "\n"); success = true; } // Om man slår in en bokstav exempelvis loopas det och man får försöka igen. else { Console.WriteLine("Du har inte angett ett en siffra. Ange ett tal mellan 0 och " + (names.Length - 1) + "\n"); success = true; } } while (success); success = true; do { Console.Write("\nAnge index till det namn som du vill byta ut:"); changedName = Console.ReadLine(); // Här testas att man slår in ett namn som innehåller endast bokstäver. if (Regex.IsMatch(name, @"^[a-zA-Z]+$")) { names[i] = name; success = false; } else { Console.WriteLine("Du har inte angett ett korrekt namn, testa igen!"); success = true; } } while (success); success = true; names[placeInNames] = changedName; Console.WriteLine("\nDet nya namnet på arrayplats " + placeInNames + " är " + changedName + ".\n"); Console.WriteLine("Arryen ser nu ut som följer:"); // Kallar metoden där namnen skrivs ut. Arrayen är nu uppdaterad. PrintArray(names); Console.WriteLine("\nTryck på valfri knapp för att avsluta."); Console.ReadKey(); } static void PrintArray(string[] array) { // Denna metod skriver ut en namnarray. for (int i = 0; i<array.Length; i++) { Console.WriteLine("Namn " + (i + 1) + ": " + array[i]); } } static void tryCatchLoop(string[] array) { // Denna metod skriver ut en namnarray. for (int i = 0; i < array.Length; i++) { Console.WriteLine("Namn " + (i + 1) + ": " + array[i]); } } } }