2017-10-13 1 views
0

Ich versuche einen Multiplikator zu erstellen. Wenn ich Nummer 5 einfüge, wird es magisch zu 53. Wenn Nummer 2, wird es 50. Ich kann nicht sehen, wo ich einen Fehler gemacht habe.Mein Eingabewert ist keine eingegebene Nummer

public static void Main(string[] args) 
{ 
    Console.WriteLine("Enter the number: "); 
    int num = Console.Read(); 
    Console.WriteLine(); 
    int i; 

    for (i = 0; i <= 10; i++) 
    { 
     int result = num * i; 
     Console.WriteLine("{0}*{1}={2}", num, i, result); 
    } 
} 
+2

ändern 'int num = Console.Read();' auf 'int num = Convert.ToInt32 (Console.ReadLine());' – Equalsk

+4

Sein ASCII-Wert von 5 Vorbehalte, –

+0

Integer-Konvertierung mit ' Console.ReadLine' funktioniert hier richtig: https://dotnetfiddle.net/UxbT5O. –

Antwort

7

Siehe documentation von Console.Read. Er gibt das nächste Zeichen aus dem Eingabestrom zurück. Indem Sie es einer int zuweisen, konvertieren Sie eine char in eine int, die den Code des Zeichens ergibt.

Verwenden Sie die Console.ReadLine Methode mit int.Parse stattdessen kombiniert:

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

Dies wird die gesamte Eingabe als string zurück und int.Parse wird versuchen, eine int daraus zu erstellen.

+2

Wirklich, sollte man 'TryParse' verwenden, da' Parse' eine Ausnahme auslöst, wenn der Benutzer eine nicht numerische Zeichenfolge eingibt. Etwas wie 'if (int.TryParse (Console.ReadLine(), out int num)), dann der Rest des Codes wie üblich innerhalb und einige Code im' else' Block. –

+0

@ T.Linnell Auf jeden Fall wollte ich meine Antwort so knapp wie möglich halten, da das OP je nach Art der Frage ein Anfänger sein muss und ich daher kein unnötiges Rauschen hinzufügen wollte. Ich vermute gültige Eingabe in dieser Antwort. –

+1

@ T.Linnell, Sie haben vergessen, Logging-und Setup-Projekt hinzuzufügen;) – Sinatr

1

Verwenden Sie die Console.ReadLine() -Methode;

int num =Convert.ToInt32(Console.ReadLine()); 
0
public static void Main(string[] args) 
    { 
     Console.WriteLine("Enter the number: "); 
     string input = Console.ReadLine(); 
     int num; 
     // Console.WriteLine(); 
     if (Int32.TryParse(input, out num)) 
     { 
      int i; 
      for (i = 0; i <= 10; i++) 
      { 
       int result = num * i; 
       Console.WriteLine("{0}*{1}={2}", num, i, result); 
      } 
     } 
     else 
     { 
      //not an integer 
      Console.WriteLine("not an integer"); 
     } 
     Console.ReadLine(); 

    } 
+0

Bitte erläutern Sie Ihren Code theks – GGO

+0

Console.ReadLine() nimmt alle Eingaben von der Konsole als String, so dass Sie in Ganzzahl konvertieren müssen. Int32.TryParse() konvertiert die Zeichenfolge in eine äquivalente 32-Bit-Ganzzahl mit Vorzeichen und weist sie out zu. Parameter.Else, Sie wissen, dass die Eingabe keine Ganzzahl ist. Danke –

+0

Bearbeiten Sie Ihre Antwort, um Ihren Code zu erklären – GGO

Verwandte Themen