2017-07-29 11 views
0

私は学校の学生ですが、NetBeans IDEを使用してJavaプログラムを作成し、プロジェクトを作成していません。NetBeans IDEの同じプロジェクトで異なるパッケージを使用する際の問題

今、私はこの問題に直面しています。同じプロジェクトに2つのパッケージがあります。 1つは私が作成したユーザー定義のユーティリティパッケージです。これには、印刷用に定義された方法と二次元配列を入力として持つメソッドを持つ1つのプログラムがあります。主な方法はありません。

私のクラスの一部は以下のとおりです。私は問題に直面している部分だけを与えています。

これは、私がアクセスしようとしているクラスの入力方法です。

package AnswerPrograms; 
import UserDefinedUtilities.*; 
import java.util.*; 
public class J124{ 
    private int m, n; 
    private void Input(){ 
     Scanner kb = new Scanner (System.in); 
     System.out.print("Enter the number of rows: "); 
     m = kb.nextInt(); 
     System.out.print("Enter the number of columns: "); 
     n = kb.nextInt(); 
     kb.close(); 
     int arr[][] = new ArrayUtilities2D().InputInt(m, n); //using the input method from the above class 
     System.out.println("The original matrix is: "); 
     new ArrayUtilities2D().IntPrint(m, n, arr); 
     if (m % 2 == 0){ 
      Mirror_Even(arr); 
     } 
     else{ 
      Mirror_Odd(arr); 
     } 
    } 
    . //other necessary methods are present here 
    . 
    . 
    . 
} 

2番目のパッケージでは、プログラムを保存しています。今、私がこのメソッドを使ってこのクラスからの入力をしようとすると、次の行が表示されます:

Exception in thread "main" java.util.NoSuchElementException 
Enter the element in cell (0,0): at 
java.util.Scanner.throwFor(Scanner.java:862) 
at java.util.Scanner.next(Scanner.java:1485) 
at java.util.Scanner.nextInt(Scanner.java:2117) 
at java.util.Scanner.nextInt(Scanner.java:2076) 
at UserDefinedUtilities.ArrayUtilities2D.InputInt(ArrayUtilities2D.java:24) 
at AnswersPrograms.J124.Input(J124.java:13) 
at AnswersPrograms.J124.main(J124.java:90) 
Java Result: 1 
BUILD SUCCESSFUL (total time: 5 seconds) 

これはなぜ来るのですか?私はBlueJでこの問題に直面していません。何かを入力する前にNoSuchElementExceptionが存在するのはなぜですか?これを是正するために私は何をすべきですか?私は自分のjdkを変更する必要がありますか?

+0

例外は 'main'にありますので、代わりに' main'のコードをアップロードしてください。または、自分で見つけるためにデバッガを使用することができます –

+0

私が言ったように、ファーストクラスはメインクラスがありません。それはユーティリティクラスなので、私はメインを書きませんでした。 2番目のクラスにはメインがあります。私はすぐにそれをアップロードします。 –

+0

InputでSystem.in()を閉じてから、InputIntでそれを読み取ろうとしています。したがって、エラーが示すように、スキャナには何も要素がありません。それはパッケージとは関係ありません。また、Javaの命名規則を尊重してください。パッケージはすべて小文字で、メソッドは小文字で始まり、キャメルケースになっています(名前にはアンダースコアではありません)。 –

答えて

1

エラーはパッケージとは関係ありません。コードをコンパイルして正常に実行し、スタックトレースが示すように、両方のメソッドが呼び出されます。

問題はスキャナを使用してSystem.inから読み取ろうとしていますが、読み取る前に閉じているということです。だからもう読まれることはない。 javadoc saysとして

その根底にあるが、読みやすいもの読みcloseメソッドが呼び出されますその後、開閉可能なインタフェースを実装している場合、このスキャナがまだ閉じられていない場合。

スキャナを閉じると、System.inも閉じます。

関連する問題