2015-11-23 29 views
-2

你好,我正在做一個報警程序,我收集數據從db.txt文件我試圖做System.out.println(array[]);的麻煩,但它沒有做任何事情,我想知道如果它是可能創建一個int讓我們調用它的編號,並使用它來選擇一個數組來打印這樣的System.out.println(array[number]);反正這就是我想要做的,它仍然返回null。這裏是我的Java鱈魚:java陣列打印爲空

import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.RandomAccessFile; 
import javax.swing.*; 

public class alarm { 
public static JFrame window; 
public JPanel p; 
public RandomAccessFile rw; 
    alarm() throws IOException { 
     window = new JFrame(); 
     window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     window.setResizable(false); 
     window.setSize(600, 600); 
     p = new JPanel(); 
     p.setLayout(null); 
     try { 
      rw = new RandomAccessFile("db.txt", "rw"); 
      int loop = 0; 
      int insertNumber = 0; 
      int[] numberArray = new int[1000000]; 
      String[] name = new String[1000000]; 
      String[] desc = new String[1000000]; 
      String[] date = new String[1000000]; 
      String row = null; 
      while(loop == 0) { 
       row = rw.readLine(); 
       if(row == "/") { 
        insertNumber = insertNumber + 1; 
        insertNumber = numberArray[insertNumber]; 
        name[insertNumber] = rw.readLine(); 
        desc[insertNumber] = rw.readLine(); 
        date[insertNumber] = rw.readLine(); 
       } 
       if(row == null) { 
        insertNumber = 0; 
        loop = 1; 
       } 
     } 
     System.out.println("Arrays loaded"); 
      while(loop == 1) { 
      insertNumber = insertNumber + 1; 
      if(name[insertNumber] == null) { 
       loop = 2; 
      } 
      System.out.println(name[insertNumber]); 
     } 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
} 
public static void main(String[] args) throws IOException { 
    new alarm(); 
    window.setVisible(true); 
} 

}

+0

的可能的複製[什麼是空指針異常,以及如何解決這個問題?( http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) – redFIVE

+1

作爲一個良好的做法,你應該檢查'row在進行任何其他比較之前,它是空的(因爲其他比較附件也不會是真實的,如果空校驗失敗) – ochi

+0

輸入文件看起來像這樣:/ 你好 小號 小號 / 世界 一個 一個 –

回答

0

您增量指標insertNumber下一個值,這是數組在空,然後你打印出來。

while(loop == 1) { 
    insertNumber = insertNumber + 1; // insertNumber is incr. before index 0 is printed 
    if(name[insertNumber] == null) { // Always true if size < 2 elements 
     loop = 2; 
    } 
    System.out.println(name[insertNumber]); //prints null is size < 2 
}  

嘗試,而不是:

for(String element : name) { 
    System.out.println(element + " "); 
} 

此外,這條線是不正確的:

insertNumber = numberArray[insertNumber]; 
+0

@TotZam看看第二個循環......'insertNumber = insertNumber + 1;'(搜索它) –

+1

downvote是否有原因?這是正確的答案。 –