Permalänk
Medlem

Reset array

Hej, jag undrar hur jag ska göra för att reseta en for loop, t. ex ifall användaren skriver in en bokstav istället för en siffra kommer det skrivas ut en 0a, jag vill att hela for loopen ska starta om så användaren inte kan skriva in en bokstav. Undrar även hur jag gör så att loopen resetas ifall användaren skriver in en siffra högre än 100 och lägre än 0.

Tack i förhand

static void Main(string[] args) { int nr = 10;//x värde för att skriva ut hur många tal som behöver fyllas i int indexPos = -1; int[] list = new int[10];//En vektor för 10 värden for (int i = 0; i < list.Length; i++)//En for loop börjar på 0 går upp till nio ökar en varje loop { try//testar koden { Console.WriteLine("Skriv in " + nr + "st tal mellan 0 och 100");// Skriver ut i consolen string input = Console.ReadLine();//Låter användaren skriva värdet på alla 10 tal list[i] = Convert.ToInt32(input); } catch { Console.WriteLine("Använd bara siffror!");//Skriver ut använd bara siffror } nr--;//x värdet sjunker varje loop } Random rand = new Random(); int randNum = rand.Next(100); foreach (int i in list) { indexPos++;//Ökar värdet med 1 för varje loop Console.WriteLine("Indexposition [" + indexPos + "] har värdet " + i);//Skriver ut värdet på alla tal if (randNum == i) //Ifall det framslumpade talet är lika med något av elementen { Console.WriteLine("Indexposition [" + indexPos + "] Stort grattis du van lottot!!! " + i);//Skrivs ut ifall det fram slumpade talet har samma värde som någon av elementen } } Console.WriteLine("Det fram slumpade talet var " + randNum); Console.ReadLine(); }

Permalänk
Medlem

en while-loop innuti for-loopen skulle kunna lösa ditt problem.

string input = "notAnInteger"; while(input inte är ett heltal) { console.writeLine("Mata in ett heltal mellan 1-100); input = console.readLine(); }

Visa signatur

10700K | NVIDIA RTX 3080

Permalänk
Medlem

Det är bara att köra i-- för att minska i med ett för att ta ut ökningen med ett som loopen gör, då körs nästa iteration med samma värde på i som förra. Ett annat alternativ som åstadkommer samma sak är att ta bort i++ i början av loopen och bara öka i när användaren matat in ett korrekt värde.

Du kan även använda continue; om du direkt vill hoppa till nästa iteration av en loop, men det behövs inte i just det här fallet eftersom du inte har något mer som körs i loopen efter inläsningen.

Permalänk
Medlem

Tack för hjälpen har ett nytt problem nu jag vill att nummerna som finns med på båda mina arrays ska skrivas ut istället för att positionen skrivs ut.

int nr = 10;//x värde för att skriva ut hur många tal som behöver fyllas i int indexPos = -1; int indexPos2 = -1; int[] array = new int[10];//En vektor för 10 värden for (int i = 0; i < array.Length; i++)//En for loop börjar på 0 går upp till nio ökar en varje loop { Console.WriteLine("Mata in " + nr + "st tal mellan 1 och 25");// Skriver ut i consolen try { int input = Convert.ToInt32(Console.ReadLine()); if (input > 0 && input < 26) { array[i] = input; nr--;//värdet sjunker varje loop } else { Console.WriteLine("Mata in ett nummer mellan 1 och 25"); i--;//Sänker i värdet med 1 varje loop } } catch { Console.WriteLine("Inga bokstäver bara siffror!");//Skriver ut använd bara siffror i--;//Sänker i värdet med 1 varje loop } } Console.WriteLine("Tryck enter"); Console.ReadLine(); Console.Clear(); int min = 0; int max = 25; int[] randomArray = new int[10]; Random randNum = new Random(); for (int y = 0; y < randomArray.Length; y++) { randomArray[y] = randNum.Next(min, max); } foreach (int i in array) { indexPos++;//Ökar värdet med 1 för varje loop Console.WriteLine("Indexposition [" + indexPos + "] har värdet " + i);//Skriver ut värdet på alla tal } Console.WriteLine("Tryck enter"); Console.ReadLine(); Console.Clear(); foreach (int y in randomArray) { indexPos2++; Console.WriteLine("Indexposition [" + indexPos2 + "] på dem framslumpade talen har värdet " + y);//Skriver ut värdet på alla tal } Console.WriteLine("Tryck enter"); Console.ReadLine(); Console.Clear(); for (int i = 0; i < array.Length; i++) { for (int y = 0; y < randomArray.Length; y++) { if (array[i] == randomArray[y]) { Console.WriteLine("Position " + array[i] + " fanns med bland dem fram slumpade talen"); } } } }

Permalänk
Medlem
Skrivet av godhetz:

Tack för hjälpen har ett nytt problem nu jag vill att nummerna som finns med på båda mina arrays ska skrivas ut istället för att positionen skrivs ut.

Det är vad du skriver ut just nu, men i utskriften kallar du det felaktigt för positionen.