0

私は、ユーザーが入力した数値を受け取り、それを最後に方程式に入れるこのコードを持っています。ただし、コンパイル時にエラー/例外が発生し続けます。「エラー:変数convertToNumLが初期化されていない可能性があります。」エラーの内容は理解できますが、これをデバッグする方法がわかりません。

これは私が知っていることです。try/catchブロックは、変数convertToNum(.readLine()メソッドから派生)を何らかの形で妨げています。誰かがこれを回避する方法を教えてもらえますか?

とても有難い。

私のコードの一部:

 if (realNumber2)
    {
      //Question 4: Height
      while (realNumber2 = true) {
        System.out.println ("3) Please enter the height of the triangle face.");


        try
        {
          stringTriangleHeight = myInput.readLine ();

          convertToNumH = Double.parseDouble (stringTriangleHeight);

          Integer.parseInt (stringTriangleHeight);

          System.out.println ("Your triangle height is " + stringTriangleHeight + " " + Units + ".");
          realNumber3 = true;

          break;
        }
        catch (Exception e)
        {
          System.out.println ("That was either a smart remark, a negative number or jibberish.");
          realNumber3 = true;
        }
      }
      while (realNumber3) {

      total1 = convertToNumL * convertToNumW;         //base area, length x width
      total2 = convertToNumL * convertToNumH / 2;     //triangle area using sidelength 'length', base x height / 2
      total3 = convertToNumW * convertToNumH / 2;     //triangle area using sidelength 'width  ,  base x height / 2
4

1 に答える 1

0

これは、trycatchブロックとは何の関係もありません。問題はconvertToNumH、whileループで初期化されることです。whileループの実行は保証されていないため(条件が最初にfalseと評価される場合があります)、値が初期化されない場合があります。

ループの外側で初期化するか、代わりにDo-Whileループを使用してください。

于 2013-02-28T01:23:12.897 に答える