J'ai cherché toute la nuit un correctif pour un système de stockage pour les entrées des utilisateurs d'une boucle jusqu'à la limite de 3 boucles. Je crois que je l'ai trouvé mais comme le titre l'indique, j'obtiens l'erreur Impossible de convertir implicitement le type «int» en «int []», sur la console.readline pour l'entrée utilisateur? des suggestions sur la façon dont je peux résoudre ce problème?

Merci d'avance.

            //Array For Ticket prices, sales and user input
            int[] TicketChoices = new int[3];

            //Ticket Types
            //ChildT = £1.50 = Child;
            //AdultT = £2.35 = Adult;
            //StudentT = £1.99 = Student;

            //Film      Certificate     Seats   Screen
            //Jaws          12A          15       1
            //The Exorcist  18           33       2

            cw("Hello Current tickets are:");

            for (int I = 0; I < 3; I++)

                {
                    cw("ID (1) Child, £1.50");
                    cw("ID:(2) Adult, £2,35");
                    cw("ID:(3) Student £1.99");
                    cw("");
                    cw("Please Select Which ticket you would like to input By Entering it's id Number");
                    cw("input Must be between 1-3 for it to be vaild.");
                    TicketChoices = int.Parse(Console.ReadLine());

                }
2
dood1 20 nov. 2018 à 02:57

3 réponses

Meilleure réponse

Voici ce que je pense que vous essayez de faire:

    static void Main()
    {
        //Array For Ticket prices, sales and user input
        var ticketChoices = new int[3];

        //Ticket Types
        //ChildT = £1.50 = Child;
        //AdultT = £2.35 = Adult;
        //StudentT = £1.99 = Student;

        //Film      Certificate     Seats   Screen
        //Jaws          12A          15       1
        //The Exorcist  18           33       2

        Console.WriteLine("Hello Current tickets are:");

        for (var i = 0; i < 3; i++)

        {
            Console.WriteLine("ID (1) Child, £1.50");
            Console.WriteLine("ID:(2) Adult, £2,35");
            Console.WriteLine("ID:(3) Student £1.99");
            Console.WriteLine("");
            Console.WriteLine("Please Select Which ticket you would like to input By Entering it's id Number");
            Console.WriteLine("input Must be between 1-3 for it to be vaild.");
            var valid = false;
            while (!valid)
            {
                var input = Console.ReadLine();
                if (int.TryParse(input, out var ticketNumber))
                {
                    if (ticketNumber >= 0 && ticketNumber <= 3)
                    {
                        valid = true; 
                    }
                }

                if (valid)
                {
                    ticketChoices[i] = ticketNumber;
                }
                else
                {
                    Console.WriteLine("Please enter a value between 1 and 3");
                }
            }
        }

        // Print the results 
        Console.WriteLine("You entered:");
        foreach (var ticketChoice in ticketChoices)
        {
            Console.WriteLine(ticketChoice);
        }

        Console.ReadLine();
    }
1
Jon Vote 20 nov. 2018 à 00:55
int[] TicketChoices = new int[3];

TicketChoices n'est pas un int c'est un tableau de int

TicketChoices = int.Parse(Console.ReadLine());

Peut-être quelque chose comme ça à la place

var choice = int.Parse(Console.ReadLine());

Aussi, si vous n'acceptez pas les commentaires d'un utilisateur, faites-lui confiance pour bien faire les choses

Utilisez TryParse Au lieu de cela

Convertit la représentation sous forme de chaîne d'un nombre en son équivalent entier signé 32 bits. Une valeur de retour indique si l'opération a réussi.

1
Michael Randall 20 nov. 2018 à 00:13

int.Parse renvoie un seul entier. Vous essayez donc de définir TicketChoices (un tableau) sur un seul entier. Cela ne fonctionnera pas.

Vous pouvez définir le premier entier de votre tableau sur la sortie de int.Parse, si c'est ce que vous voulez:

TicketChoices[0] = int.Parse(Console.ReadLine());
0
Gabriel Luci 20 nov. 2018 à 00:00