0

三角形のタイプを出力するために 3 つの整数を要求するプログラムを作成しました。すべてが実行され、正常にコンパイルされますが、ユーザーに再度ループするかどうかを確認するように求める部分のようです。オンライン コンパイラはエラーを出力します。

Assignment5.main(Assignment5.java: 56)

import java.util.Scanner;
    public class Assignment5 {

    public static void main (String[]args)
    {


        for (int a = 0; a < Integer.MAX_VALUE; a++)
        {
        Scanner userInput = new Scanner(System.in);
        Scanner answer = new Scanner(System.in);

        int x,y,z;

        System.out.println("Enter the sides of the triangle: ");


        x = userInput.nextInt();
        y = userInput.nextInt();
        z = userInput.nextInt();
        Tri isos = new Tri(x,y,z);
        Tri equal = new Tri(x,y,z);
        Tri scalene = new Tri(x,y,z);



          // check the equilateral triangle
          System.out.println(equal.toString() + " triangle:");


          if (equal.is_isosceles())
             System.out.println("\tIt is isosceles");
          else
             System.out.println("\tIt is not isosceles");

          if (equal.is_equilateral())
             System.out.println("\tIt is equilateral");
          else 
             System.out.println("\tIt is not a equilateral");

          if (equal.is_scalene())
             System.out.println("\tIt is scalene");
          else
             System.out.println("\tIt is not scalene");

          System.out.println("Would you like to enter values again? (y/n)" );

          String input = answer.next();   //Exception is thrown from here

          if (input.equals("y"))
          {
              System.out.println("ok");
          }
              else if(!input.equals("y"))
              {
                  System.out.println("Ok, bye.");
                  break;
              }

        }
    }
    }
4

3 に答える 3

1

NoSuchElementException:

列挙型の nextElement メソッドによってスローされ、列挙型にこれ以上要素がないことを示します。

改行文字 (Enter キーを押したときの文字) ( ) を読み取らないため、この例外が発生します。そのため、次の反復でそれを読み取ろうとすると、例外が発生します。Scanner#next \nfor

考えられる解決策の 1 つは、この余分なを飲み込むためにanswer.nextLine()直後に追加することです。answer.next()\n


コードの例:

Iteration (a) |  input for scanner    |  Data for scanner
--------------+-----------------------+-------------------
      0       |   "Hello" (And enter) |       Hello
      1       |         \n            |      PROBLEM!
于 2013-10-09T09:23:32.913 に答える
0

あなたが言ったように、コードは実行されますが、オンラインコンパイラでコンパイルして実行すると実行されません。要素がないため、回答スキャナーは使い果たされています。

恥ずかしいですが、オンライン コンパイラでコードをコンパイルしたときに同じエラーが発生したことがあります。入力セクションに事前に入力を提供しておらず、オンライン コンパイラが入力を要求することを期待していたことが判明しました。

コンソールから入力を取得するために 2 つのスキャナーを使用しているため、代わりにスキャナー userInput を使用してファイルから入力を取得してみてください。(オンラインコンパイラによって異なる場合がありますが、ファイルから入力を提供するオプションがあります)

于 2014-01-16T04:56:11.537 に答える