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(); } } } } }
3 Réponses :
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!"); }
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); }
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!
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); } }```
Ce que vous avez semble fonctionner. L'avez-vous débogué pour voir pourquoi ce n'est pas le cas?