2017-09-11 43 views
0

質問があります。このプログラムは、2つの整数RとL(どちらも1と1000の間)を受け取り、シリンダの面積と体積を計算することになっています。私の問題は、私はランタイムエラーを取得し続けているということです。円柱の面積と体積を計算するためのJavaランタイムエラー

import java.util.Scanner; 
public class Main 
{ 

    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     int radius = input.nextInt(); 
     Scanner input2 = new Scanner(System.in); 
     int length = input2.nextInt(); 

     while ((radius > 1000) || (radius < 1)) 
     { 
      input = new Scanner(System.in); 
      radius = input.nextInt(); 
     } 

     while ((length > 1000) || (length < 1)) 
     { 
      input2 = new Scanner(System.in); 
      length = input2.nextInt(); 
     } 

     double area = (radius * radius) * 3.14159; 
     double volume = area * length; 

     System.out.printf("%.1f\n", area); 
     System.out.printf("%.1f\n", volume); 
    } 
} 

私は取得していますエラーは次のとおりです:

Exception in thread "main" java.util.NoSuchElementException at 
    java.util.Scanner.throwFor(Scanner.java:862) at 
    java.util.Scanner.next(Scanner.java:1485) at 
    java.util.Scanner.nextDouble(Scanner.java:2413) at 
    Main.main(Main.java:10) 
+3

どのような実行時にエラーがありますか?私は何も見ません。 –

+0

こんにちはMr. Prokhorov。 このプログラムが正常に実行され終了することを意味します。 私の学校で使用されている格付けプログラムを現在使用していますが、ランタイムエラーがあると言います... スレッド "main"の例外java.util.NoSuchElementException \t at java.util.Scanner Main.mainでjava.util.Scanner.next(Scanner.java:1485)で.throwFor(Scanner.java:862) \t java.util.Scanner.nextDoubleで\t(Scanner.java:2413) \t( Main.java:10) これはどういう意味ですか?ありがとうございました。 – Sean

+3

「あなたのエラーが何であるかはわからない」という意味です。今はやっていますが、最初から含めておくべきです。 –

答えて

1

あなたはそれがいくつかの入力を持っているかどうかを確認する必要がある入力にnetInt()を呼び出す前にここに私のコードです。また、毎回input2を再初期化する必要はありません。実際には1つの入力スキャナを使用する必要があります

import java.util.Scanner; 
public class Main 
{ 

public static void main(String[] args) 
{ 
    Scanner input = new Scanner(System.in); 
    int radius = 0; 
    if(input.hasNextInt()){ 
     radius = input.nextInt(); 
    } 
    int length = 0; 
    //Scanner input2 = new Scanner(System.in); 
    if(input.hasNextInt()){ 
     length = input.nextInt(); 
    } 
    while ((radius > 1000) || (radius < 1)) 
    { 
     // input = new Scanner(System.in); 
     if(input.hasNextInt()){ 
      radius = input.nextInt(); 
     } 
    } 

    while ((length > 1000) || (length < 1)) 
    { 
     //input2 = new Scanner(System.in); 
     if(input.hasNextInt()){ 
      length = input.nextInt(); 
     } 
    } 

    double area = (radius * radius) * 3.14159; 
    double volume = area * length; 

    System.out.printf("%.1f\n", area); 
    System.out.printf("%.1f\n", volume); 
    } 
} 
+0

これは@Seanのために働いたのですか? –

関連する問題