2017-07-06 2 views
0

chaque fois que je tente d'exécuter mon programme le compilateur me fait une erreur Input string was not in a correct format.exception Format non gérée: chaîne d'entrée était pas dans un format correct

mon code:

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"); 
      } 
     } 

et

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 (le nombre +" est un nombre pair ");' est le problème. Vous essayez d'analyser la chaîne en nombre. Vous devriez retourner la chaîne de la méthode et utiliser 'return number +" est un nombre pair "' –

+0

Veuillez inclure la déclaration de 'number' dans votre exemple de code, et dites-nous comment vous l'avez défini. –

+0

@ChetanRanpariya au retour – pkarthicbz

Répondre

0

int.Parse lancera l'exception en question si la chaîne d'entrée ne peut pas être convertie en nombre.

Au lieu de cela, vous devez utiliser 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

Il semble y avoir quelques problèmes:

On est tout simplement une question de conception/utilisation: vous avez une méthode appelée « evenOrOdd » qui retourne un int . Cela aurait plus de sens si à la place vous aviez une méthode appelée "IsEven" (ou "IsOdd") qui renvoyait un booléen, ou peut-être une méthode appelée "GetEvenOrOddMessage" qui renvoyait une chaîne.

Une autre est que vous essayez de convertir une chaîne non numérique en un entier (votre méthode int.Parse échouera avec une valeur de chaîne non numérique).

Vraisemblablement, vous voulez une méthode qui retourne une chaîne de message si le nombre est pair ou impair, donc vous n'avez pas besoin d'essayer de lancer quoi que ce soit dans un int, mais plutôt dans une chaîne.

Ainsi, nous pouvons créer une méthode qui retourne le message que nous voulons, donner une entrée numérique:

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

Maintenant, pour tester si la chaîne est en effet un entier, on peut utiliser int.TryParse, qui retourne true si l'analyse réussit et définit un paramètre out sur la valeur.

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

Pour utiliser int.parse parse que les données que vous souhaitez convert.Take noter que la valeur de retour de int.parse sera entier. Donc, les lettres et les caractères vont déclencher le format incorrect. Par exemple. Correct - int.parse ("2") Incorrect - int.parse ("2a")

nombre public int;

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