2017-07-06 5 views
0

wann immer ich versuche, mein Programm der Compiler bringen mir einen Fehler Input string was not in a correct format.Format Ausnahme nicht behandelte: Eingabezeichenfolge war nicht in einem korrekten Format

meinen Code auszuführen:

public int number; 
public int evenOrOdd() 
     { 
      if(number % 2 == 0) 
      { 
       return int.Parse(number+" is a even number"); 
      } 
      else 
      { 
       return int.Parse(number + " is a oddnumber"); 
      } 
     } 

und

private void checkerButton_Click(object sender, EventArgs e) 
     { 
      pali = new Palindrome() { number = int.Parse(checkerBox.Text) }; 
      checkerLabel.Text = pali.evenOrOdd().ToString(); 
     } 
+0

'Return int.Parse (Nummer +" ist eine gerade Zahl ");' ist das Problem. Sie versuchen, String zu Nummer zu analysieren. Sie sollten den String aus der Methode zurückgeben und 'return number +" verwenden ist eine gerade Zahl "' –

+0

Bitte fügen Sie die Deklaration für 'number' in Ihr Codebeispiel ein und teilen Sie uns mit, wie Sie es einrichten. –

+0

@ChetanRanpariya bei Rückkehr – pkarthicbz

Antwort

0

int.Parse löst die betreffende Ausnahme aus, wenn die Eingabezeichenfolge nicht in eine Zahl konvertiert werden kann.

Stattdessen sollten Sie verwenden int.TryParse

int parsed = 0; 
if (int.TryParse(checkerBox.Text, out parsed)) 
{ 
    pali = new Palindrome() { number = parsed}; 
} else { 
    // show an error and exit the method. 
    return; 
} 
1

Es scheint ein paar Probleme zu sein:

One ist einfach ein Design/Nutzung Problem: Sie haben eine Methode namens „evenOrOdd“, die einen int zurückgibt . Es würde mehr Sinn ergeben, wenn Sie statt dessen eine Methode namens "IsEven" (oder "IsOdd") hätten, die eine bool zurückgibt, oder vielleicht eine namens "GetEvenOrOddMessage", die eine Zeichenkette zurückgibt.

Eine andere ist, dass Sie versuchen, eine nicht numerische Zeichenfolge in eine Ganzzahl zu konvertieren (Ihre int.Parse-Methode schlägt mit einem nicht numerischen Zeichenfolgenwert fehl).

Vermutlich möchten Sie eine Methode, die eine Nachrichtenzeichenfolge zurückgibt, wenn die Zahl gerade oder ungerade ist, so dass Sie nicht versuchen müssen, irgendetwas in ein int, sondern in eine Zeichenfolge umzuwandeln.

So können wir eine Methode erstellen, die die Nachricht zurückgibt wir wollen, geben einige numerische Eingabe:

public string GetEvenOrOddMessage() 
{ 
    if (number % 2 == 0) 
    { 
     return (number + " is an even number"); 
    } 
    else 
    { 
     return (number + " is an odd number"); 
    } 
} 

nun zu testen, ob die Zeichenfolge in der Tat eine ganze Zahl, können wir int.TryParse verwenden, die true zurück, wenn Die Syntaxanalyse ist erfolgreich und setzt einen out Parameter auf den Wert.

private void checkerButton_Click(object sender, EventArgs e) 
{ 
    int input; 
    if (int.TryParse(checkerBox.Text, out input)) 
    { 
     pali = new Palindrome() { number = input }; 
     checkerLabel.Text = pali.GetEvenOrOddMessage(); 
    } 
    else 
    { 
     // Do something if the input string is not a number 
    } 
} 
0

Um int.Parse Parse zu verwenden nur die Daten, die Sie zur Kenntnis convert.Take dass der Rückgabewert von int.Parse integer sein. So lösen Buchstaben und Zeichen das falsche Format aus. Beispielsweise. Korrekt - int.parse ("2") Falsch - int.parse ("2a")

öffentliche int-nummer;

if(number % 2 == 0) 
{ 
return int.Parse(number) + "is a even number"; 
} 
else 
{ 
return int.Parse(number) + "is a odd number"; 
} 
Verwandte Themen