2016-06-23 6 views
-5

ここに投稿する前にこれを検索しましたが、答えが見つかりませんでした。もう1つの入力文字列が正しい形式でない

try 
     { 
      int qty, price, tot; 

      qty = Convert.ToInt32(txtQty.Text); 
      price = Convert.ToInt32(txtPrice.Text); 

      if (DropDownList1.SelectedItem.Value == "0") 
      { 
       price = 10; 
       tot = Convert.ToInt32(qty * price); 
       txtPrice.Text = tot.ToString(); 
      } 
      if (DropDownList1.SelectedItem.Value == "1") 
      { 
       price = 20; 
       tot = Convert.ToInt32(qty * price); 
       txtPrice.Text = tot.ToString(); 
      } 
     } 
     catch(Exception ex) 
     { 
      lblItemMessage.Text = ex.Message; 
     } 

「入力文字列が正しい形式ではありません」というメッセージが表示されます。私がif文なしで前にそれをしたときにうまくいきましたが、今はただこのメッセージを伝えています。現在、エラーメッセージは表示されませんが、データベースに追加されるわけではありません。

私はInt32.TryParse()を試しましたが、同じエラーが表示されます。計算された価格は、txtPrice.Textに表示されると仮定します。 Qtyテキストボックスは数値テキストモードです。

私は助けていただければ幸いです。

おかげ

+0

入力は何?どのラインで失敗するのですか? – Dennisch

+2

'Int32.TryParse()でも同じエラーが出ます。 'Int32.TryParse()'のコードを含めてください。 –

答えて

2

それが役立つかどうかわからないが、qty以来とpriceがint形式に既にある、それが再びint型に変換する役に立たないです。 だから私はちょうど書くだろう:

tot = qty * price;

また、あなたは文字列の両方iftotに変換されるので、読みやすくを持っている場合は、第二の終わりにそれを置くことができます。このように:

 if (DropDownList1.SelectedItem.Value == "0") 
     { 
      price = 10; 
      tot = qty * price; 
     } 
     else if (DropDownList1.SelectedItem.Value == "1") 
     { 
      price = 20; 
      tot = qty * price; 
     } 
     txtPrice.Text = tot.ToString(); 
+0

'else if'を2番目の' IF'として使用する方が良いと思います – Mark

+0

@マークはい、そうです、細部には注意を払わなかった:) –

1

私はあなたのためにいくつかの提案を持っている:

あなたがInt32.TryParse()を使用している場合は、変換が失敗した場合TryParseメソッドが例外をスローしませんので、それはFormatExceptionをスローすることは決してありません。これは、sが無効で正常に解析できない場合に、例外処理を使用してFormatExceptionをテストする必要性を排除します。

qty, price, totを整数として宣言しました。したがって、Convert.ToInt32()を使用して再度変換する必要はなく、totに割り当ててください。

適切な命名規則を使用して、可読性と理解力を向上させるのに役立ちます。

は、次のように私はスニペットを書き換えてみましょう:

int itemQuantity, itemPrice, itemTotal; 

if (Int32.TryParse(txtQty.Text, out itemQuantity) && Int32.TryParse(txtitemPrice.Text, out itemPrice)) 
{ 
    if (ddlOption.SelectedItem.Value == "0") 
    { 
     itemTotal=itemQuantity * itemPrice + 10; 
     txtPrice.Text=itemTotal.ToString(); 
    } 
    else if (ddlOption.SelectedItem.Value == "1") 
    { 
     itemTotal=itemQuantity * itemPrice + 20; 
     txtPrice.Text=itemTotal.ToString(); 
    } 
} 
関連する問題