2017-07-06 18 views
0

私は私のプログラムを実行しようとするこれまでのコンパイラは私にエラーをもたらすときInput string was not in a correct format.フォーマット例外未処理:入力文字列が正しい形式ではありませんでした

私のコード:

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

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(number +"は偶数です); 'が問題です。文字列を数値に解析しようとしています。メソッドから文字列を返し、 'return number +"を偶数として使用する必要があります。 " –

+0

コード例に' number'の宣言を含め、設定方法を教えてください。 –

+0

@ChetanRanpariya返信時 – pkarthicbz

答えて

0

int.Parseは、入力文字列を数値に変換できない場合、例外として例外をスローします。あなたが問題のカップルがあるように思われる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

使用する必要があります代わりに

一つは、単に設計/使用状況の問題です:あなたはintを返し、「evenOrOdd」と呼ばれる方法があります。代わりに、ブールを返す "IsEven"(または "IsOdd")メソッド、またはストリングを返した "GetEvenOrOddMessage"というメソッドがあった方が理にかなっています。

もう1つは、数値以外の文字列を整数に変換しようとしていることです(int.Parseメソッドは数字以外の文字列値で失敗します)。

数値が偶数または奇数の場合はメッセージ文字列を返すメソッドが必要なので、intにキャストしようとする必要はなく、文字列にキャストしようとします。 trueを返す文字列が実際の整数であるかどうかをテストするために、今すぐ

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

、我々はint.TryParseを使用することができ、場合:

だから我々はいくつかの数値入力を与え、私たちが望むメッセージを返すメソッドを作成することができます解析が成功し、outパラメータが値に設定されます。

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

あなたがint.parseの戻り値は整数になりますのでご注意をconvert.Takeしたいのみデータ解析 int.parseを使用します。したがって、文字と文字が間違ったフォーマットを引き起こします。例えば。 修正 - int.parse( "2") 不正確 - int.parse( "2a")

public int number;

if(number % 2 == 0) 
{ 
return int.Parse(number) + "is a even number"; 
} 
else 
{ 
return int.Parse(number) + "is a odd number"; 
} 
関連する問題