2016-06-12 55 views
0

我是新的Java語言,這是我第一次使用掃描儀庫文件。 我敢肯定我防止法空指針發生,但是當我運行爲主,堆棧跟蹤說:在 Big_data_package.sort_test_main.readintoarr(線程「main」顯示java.lang.NullPointerExceptionJava的空指針例外scanner.nextint()

異常sort_test_main.java:22) 在Big_data_package.sort_test_main.main(sort_test_main.java:60)

它發生在nextInt功能上scanner方法。 你們能幫我指出我的代碼中的錯誤嗎?非常感謝。

public class sort_test_main{ 

static File inputfile = new File("E:\\Java_workspace\\Big_Data_Sort\\io\\input.txt"); 
static mergeSort merge = new mergeSort(); 
static Scanner scanner; 
static int[] inputarr; 

public static int[] readintoarr (int[] list, Scanner scanner) throws IOException{ 
    int i = 0; 
    boolean endfile = false; 

    scanner = new Scanner(inputfile); 

     while(!endfile) 
     { 
      if(scanner.hasNextInt()){ 
      list[i++] = scanner.nextInt(); 
      } 
      else{ 
       endfile = true; 
      } 
     } 
     scanner.close(); 

    return list; 
}// end of readintoarr 

public static void arrtofile (int[]x) throws IOException{ 

    File file = new File("E:\\Java_workspace\\Big_Data_Sort\\io\\output.txt"); 

    // if file doesnt exists, then create it 
    if (!file.exists()) { 
     file.createNewFile(); 
    } 

    BufferedWriter outputWriter = null; 


     outputWriter = new BufferedWriter(new FileWriter(file)); 
     for (int i = 0; i < x.length; i++) { 
     // Maybe: 
     outputWriter.write(x[i]+""); 
     // Or: 
     outputWriter.write(Integer.toString(x[i])); 
     outputWriter.newLine(); 
     } 
     outputWriter.flush(); 
     outputWriter.close(); 
}//end of arrtofile 

//test 
public static void main(String[] args)throws IOException { 

    readintoarr(inputarr,scanner); 
    merge.mergeSort1(inputarr,0,inputarr.length); 
    arrtofile(inputarr); 

}} 
+0

你是怎麼稱呼這個方法的? 'list'爲空嗎? –

+0

我想通過讀取文件來填充數組,並且我調用下面主要方法的方法 – grahmada

+0

'static int [] inputarr;'相當於'static int [] inputarr = null;' –

回答

1

您尚未將內存分配給list/inputarr。試試這個:

inputarr = new inputarr[100] 
+0

事實是,數目詮釋我想要處理的是大約一千萬。你對此有何建議?我應該讓inputarr = new inputarr [Integer.MAX_VALUE]? – grahmada

+0

Integer.MAX_VALUE是10^9。千萬是10^7。所以做一個10^7大小的數組。 –