0
votes

Comment attraper la lettre Q

Je suis un novice. J'essaie d'obtenir un numéro à partir du clavier utilisateur. Lorsqu'un nombre est tapé - il compte bien, quand une lettre est tapée - une exception non gérée se produit. J'ai donc ajouté try / catch et c'est ok. Je voudrais en quelque sorte distinguer la lettre Q entrée du clavier et après avoir appuyé dessus, terminer la boucle. Veuillez aider. J'ai conçu quelque chose de mal :) merci

using System;
namespace Matematyka_Dyskretna
{
    class Program
    {
        public static void Dec_to_bin(int number)
        {
            int i = 0;
            int[] tab = new int[31];
            while (number != 0)
            {
                tab[i++] = number % 2;
                number /= 2;
            }
            for (int j = i - 1; j >= 0; j--)
                Console.Write(tab[j] + " ");
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Program konwertuje liczbę w systemie dziesiętnym do systemu dwójkowego\nAby opuścić program wciśnij klawisz Q");
            string ans = Console.ReadLine().ToLower();
            while (ans != "q")
            {
                int number;
                Console.Clear();
                Console.WriteLine("Podaj liczbę w systemie dziesiętnym");
                try
                {
                    number = Int32.Parse(Console.ReadLine());
                        Console.WriteLine("Liczba {0} w systemie dwójkowym to: ", number);
                        Dec_to_bin(number);
                        Console.ReadKey();
                }
                catch
                {
                    Console.WriteLine("ZÅ‚e dane - podaj liczbÄ™ calkowitÄ…");
                    Console.ReadKey();
                }    
                }
            }
        }
    }


1 commentaires

Ce que vous avez semble fonctionner. L'avez-vous débogué pour voir pourquoi ce n'est pas le cas?


3 Réponses :


0
votes

Vous voudrez probablement construire votre boucle comme ceci en utilisant le readline() dans l'instruction while.

string ans = "";
while ((ans = Console.ReadLine().ToLower()) != "q") {
    Console.WriteLine($"your entered {ans} enter q to quit!");
}


0 commentaires

0
votes

Vous pouvez rendre votre logique beaucoup plus simple en utilisant une boucle while infinie, couplée à des instructions break et continue . int.TryParse vous permettra également d'éviter d'attraper une exception.

Console.WriteLine("Program konwertuje liczbę w systemie dziesiętnym do systemu dwójkowego\nAby opuścić program wciśnij klawisz Q");

while (true)
{
    var ans = Console.ReadLine().ToLower();
    if (ans == "q")
    {
        break;
    }

    Console.Clear();
    Console.WriteLine("Podaj liczbę w systemie dziesiętnym");

    if (!int.TryParse(ans, out var number))
    {
        Console.WriteLine("ZÅ‚e dane - podaj liczbÄ™ calkowitÄ…");

        continue;
    }

    Console.WriteLine("Liczba {0} w systemie dwójkowym to: ", number);
    Dec_to_bin(number);
}


3 commentaires

Cela ressemble à ce que je veux, mais je n'ai pas pu le comprendre moi-même. Je vais le vérifier car il a l'air simple et élégant


Cela ne fonctionne pas exactement comme sauf, mais je pense que c'est un bon moyen. Je modifierai


Ravi d'être utile. Bonne chance dans vos futurs efforts de codage!



0
votes

J'ai fait un look comme celui-ci, et cela fonctionne bien:

            {
                var ans = Console.ReadLine().ToLower();
                if (ans == "q")
                {
                    Console.WriteLine("koniec!");
                    break;
                }
                Console.Clear();
                Console.WriteLine("Podaj liczbę w systemie dziesiętnym");
                ans = Console.ReadLine();
                if (int.TryParse(ans, out var number))
                {

                    Console.WriteLine("Liczba {0} w systemie dwójkowym to: ", number);
                    Dec_to_bin(number);
                }
                else
                {
                    Console.WriteLine("Zła wartość. " + msg);
                }
            }```


0 commentaires