在Net Beans IDE中使用同一项目中的不同包时出现问题

时间:2017-07-29 18:26:56

标签: java netbeans-8.1

我是学生,我使用Net beans IDE编写java程序,而不是创建项目。

现在,我正面临着这个问题。我在同一个项目中有两个包。一个是我创建的用户定义的实用程序包。这有一个程序,它具有为打印定义的方法并将双维数组作为输入。它没有主要方法。

我的课程的一小部分如下。我只给出了我遇到问题的部分。

package UserDefinedUtilities;
import java.util.*;
public class ArrayUtilities2D {
  public int[][] InputInt(int m, int n){
      Scanner kb = new Scanner (System.in);
      System.out.println();
      int arr[][] = new int[m][n];
      System.out.println("Enter the array elements: ");
      for (int i = 0; i < m; i++){
          for (int j = 0; j < n; j++){
              System.out.print("Enter the element in cell (" + i + "," + j + "): ");
              arr[i][j] = kb.nextInt();
          }
      }
      kb.close();
      System.out.println();
      return arr;
  }
}

这是我尝试访问的类的输入方法。

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
    .
    .
    .
}

在第二个包中,我存储了我的程序。现在,当我尝试使用这个方法从这个类中获取输入时,会显示以下行:

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吗?

1 个答案:

答案 0 :(得分:1)

错误与包无关。您编写代码并运行正常,并且在堆栈跟踪显示时,将调用这两种方法。

问题是您尝试使用扫描仪从System.in读取,但是在阅读之前您已将其关闭。所以没有什么可读的了。

作为javadoc says

  

如果此扫描程序尚未关闭,那么如果其底层可读也实现了Closeable接口,那么将调用可读的close方法。

因此,当您关闭扫描仪时,您还要关闭System.in