2015-12-11 49 views
0

我的朋友和我有相同的确切代码,但只有我的空行显示。我们对编码都很陌生,所以我们不知道该怎么做,或者如何解决它,尤其是因为它似乎对她有用。 的Java是告诉我,我的具有相同代码的两个人,只有一个人有NullPointerException?

StringTokenizer st= new StringTokenizer(bf.readLine()); 

为空。我在网上阅读,我可以使用try-catch方法来运行带有空行的程序。但是,我的终端窗口必须以某种方式打印出来(对于我的老师),所以我不能让try-catch方法在运行时留下额外的打印行。如果有人有任何解决办法,请让我知道!另外,如果有人能解释一个代码对于一个人来说可以有一个空行,而另一个会很好,因为我真的不知道它为什么对她有用,而不是我。

这是我的完整代码,我指出哪一行包含空行。

import java.util.Scanner; 
import java.io.*; 
import java.util.*; 
public class QuizGrading 
{ 
    public static void main (String[]args) throws IOException 
{ 
    ///key part 
    System.out.println(" "); 

    BufferedReader bf = new BufferedReader(new FileReader("key.in")); 
    StringTokenizer st = new StringTokenizer(bf.readLine()); **(NULL)** 

    int num = Integer.parseInt(st.nextToken()); 
    int [] key = new int[num]; 

    st=new StringTokenizer(bf.readLine()); 
    for (int i=0; i<num; i++) 
    { 
     int an = Integer.parseInt(st.nextToken()); 
     key[i] = an; 
    } 
    ///answer part 



    BufferedReader br = new BufferedReader(new FileReader("tenQuizzes.in")); 
    StringTokenizer answers = new StringTokenizer(br.readLine()); 
    int stu=1; 
    int numq = Integer.parseInt(answers.nextToken()); 
    for (int u=0; u<numq; u++) 
    { 
     int right=0; 
     answers = new StringTokenizer(br.readLine()); 
     for (int s=0; s<num; s++) 
     { 
      int ans=Integer.parseInt(answers.nextToken()); 
      if (ans==key[s]) 
      { 
       right=right+1; 
      } 
     } 
     double percent = right*100/num; 

     System.out.println("There are "+right+" questions correct."); 
     System.out.println("Student "+stu+" scored "+percent+"%."); 
     System.out.println(" "); 
     stu=stu+1; 
    } 
    System.out.println(" "); 
} 

}

+0

很可能你的Java程序找不到'key.in'文件,所以当你试图访问它时你会得到'NullPointerException'。 –

+0

key.in文件是空的检查它。 – usman

+0

你不应该使用'FileReader';这将使用您的平台的默认字符编码,并且它可能因平台而异。另外,这是2015年,所以使用'Files.newBufferedReader()'代替。 – fge

回答

4

BufferedReader.readLine()返回null是否达到文件结尾。猜猜你没有阅读相同的文件。毕竟,导致NPE的文件可能是空的。

+0

我重新下载了key.in和tenQuizzes.in文件,它工作!看起来我的key.in文件是空的......很奇怪,考虑到我刚刚从以前的同一个地方下载过它。谢谢! –

0

的事情是的FileReader不能在你的机器来查找文件名“key.in”。 BufferedReader bf = new BufferedReader(new FileReader(“key.in”));

但是,它发现在你朋友的机器上。

+2

然后这将是一个IOFileNotFound异常,而不是nullPointerException –

+0

同意BetaRide的答案。 – KayV

相关问题