1 svar
313 visningar
programmeringnewbie 1 – Fd. Medlem
Postad: 23 nov 2021 12:55 Redigerad: 23 nov 2021 13:13

Problem med villkor i for-loop

Hej! Sitter fast på (förhoppningsvis) en sista sak i min skoluppgift om lottobollar.. Skriver i C#.
Jag vill i min första for-loop se till att man inte kan skriva in tecken, alltså att ett felmeddelande isåfall ska dyka upp: detta utan att hela loopen går "sönder". Har testat en try catch på alla möjliga sätt. Helst av allt skulle jag vilja hitta ett sätt utan try catch, typ en if-sats som bestämmer att det blir ett felmeddelande på ALLT som inte är 1-25.
Nu är jag dock för mycket av en nybörjare för att veta hur detta ska lösas. Skulle någon kunna ge mig en knuff i rätt riktning, eller en vettig hemsida som förklarar hur jag kan göra (har letat och letat)?
Finns det för övrigt annan input på hur jag förbättrar/snyggar till koden så tas det tacksamt emot. 

Koden:

 

using System;

namespace Lottobollar
{
class Program
{
    public static void Main(string[] args)
    {
        int[] usersWorth = new int[9]; //Skapar vektor med namn usersWorth där programmet ska lagra användarens tal

        //Hälsar användare välkommen och ger användaren instruktioner till spelet
        Console.WriteLine("Hi and welcome to The Lottery-game!\n");
        Console.WriteLine("Instructions to the game:\nYou will be asked to write in " +
                          "9 diffrent lottery-ball numers between 1-25 into your board: ");

        //Skapar en tvådimensionell vektor som är 3x3 stor för att ge spelaren en bild av hur spelet ser ut.
        int[,] gameBoard = new int[,]{{0, 0, 0},
                                      {0, 0, 0},
                                      {0, 0, 0}};

        printBoard(gameBoard);
        
       

        Console.WriteLine("If any of your choices matches the random lottery-ball " +
                          "number in todays lottery, you'll win.\nGood luck, champ!\n");

        Console.WriteLine("Please enter you 9 lottery numbers: \n"); //Ber användaren skriva in sina lottonummer

        for (int i = 0; i < usersWorth.Length; i++) //Loop som låter användaren skriva in sina 9 lottotal
        {
                Console.Write("Your lottery number " + (i + 1) + " : ");
                string str = Console.ReadLine();
                int number = Convert.ToInt32(str); //Omvandlar användarens string till int
                
                while (number < 1 || number > 25)
                {
                    Console.BackgroundColor = ConsoleColor.Red; //Gör bakgrund till röd under error-meddelande
                    Console.ForegroundColor = ConsoleColor.Black; //Gör text svart under error-meddelande
                    Console.Write("ERROR!!! This program only accept numbers between 1-25..\n");
                    Console.BackgroundColor = ConsoleColor.Black; //Ändrar tillbaka färgerna till normalt
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Write("Please enter a new lotterynumber:\n");
                        str = Console.ReadLine();
                    number = Convert.ToInt32(str);
                }
                
                usersWorth[i] = number; //Sparar användarens valda tal som int
        }
        
        Random randomerare = new Random(); //Slumpar fram ett tal till spelet
        int winningNr = randomerare.Next(1, 26); //Vinnande lottotal: winningNr
        
        Console.Write("Your chosen lottery-balls is : \n");
        
        bool foundNumber = false; //Skapar en bool för att kontrollera ifall användaren skrivit in vinnande siffra i lotteriet.
        
        for (int i = 0; i < usersWorth.Length; i++)
        {
            Console.WriteLine(usersWorth[i]); //Skriver ut användarens tal.
            
            if (usersWorth[i] == winningNr)
            {
                foundNumber = true; //Sätter bool-värde till true om rightNr finns bland användarens olika element i array
            }
            
        }
        Console.ReadLine();
        
        Console.WriteLine("TODAYS WINNING LOTTERY-NUMBER IS....");
        Console.ReadLine();
        Console.WriteLine("----->> " + winningNr + " <<-----"); //Visar dagens vinnande lottoNr
        Console.ReadLine();
            
            if (foundNumber == true) //Om användaren angivit det framslumpade winningNr i sin array kommer följande string ut.
            {
                Console.WriteLine("One of the numbers lottery-balls you've selected, " + winningNr 
                                  + ", matches the winning bingo-ball! Congratulations!");
            }
            else //Om användaren inte skrivit in rätt Nr i sin array skrivs denna string ut.
            {
                Console.WriteLine ("None of your lottery-balls was a match to the winning ball, better luck next time!");
            }
            Console.ReadLine();

        Console.Write("Press any key to exit the game.");
        Console.ReadKey(true);
    }

    static void printBoard(int[,] board)
    {
        for (int i = 0; i < board.GetLength(0); i++) // For-loop som går igenom vektorn nerifrån och upp
        {
            Console.WriteLine(" -------------");
            Console.Write(" | ");
            for (int j = 0; j < board.GetLength(1); j++) //For-loop som går igenom vektorn från vänster till höger
            {
                Console.Write(board[i, j] + " | "); //Skriver ut en tom lottobricka
            }
            Console.WriteLine("");
        }
        Console.WriteLine(" -------------");

    }
}
}

Laguna Online 28445
Postad: 7 dec 2021 20:48

Du kan använda TryParse i stället för ToInt32. Slå upp hur den fungerar, den returnerar svaret på ett lite annat sätt.

Svara Avbryt
Close