2017-07-29 42 views
0

我是一名学校学生,我使用Net beans IDE编写Java程序,而不是创建项目。在Net Beans IDE的同一项目中使用不同软件包的问题

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

我的班的一小部分在下面给出。我只给出我面临问题的部分。

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

+0

例外是'main',所以请上传'main'代码。或者你可以尝试使用调试器自己找出 –

+0

正如我所说,第一类没有主类。这是一个实用程序类,所以我没有写一个main。第二类有一个主。我会尽快上传。 –

+0

您在Input中关闭System.in(),然后尝试在InputInt中读取它。所以,如错误所示,扫描仪中没有元素了。这与包无关。另外,请尊重Java命名约定。包都是小写字母,方法以小写字母开头并且是骆驼状的(在它们的名字中不是下划线)。 –

回答

1

该错误与软件包无关。您的代码编译并运行良好,并且在堆栈跟踪显示时,这两个方法都会被调用。

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

由于javadoc says

如果此扫描器尚未关闭,并且其基础readable也实现Closeable接口,则该readable的close方法将被调用。

因此,当您关闭扫描仪时,您也正在关闭System.in

相关问题