2014-07-19 139 views
0

我得到我的程序的誤差範圍的異常是什麼意思?處理出陣列

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 
    at MultiCharacterDisplay.main(MultiCharacterDisplay.java:74) 
Java Result: 1 

這是後我運行它,我得到一個出界外的我已經得到了從

public void setText(String text) { 
    if (text.length() > segmentDisplayCount) { 
     text = text.substring(0, segmentDisplayCount); 
    } 

    int i = 0; 
    for (char c: text.toCharArray()) { 
     segmentDisplays.get(i++).setCharacter(c); 
    } 
} 

public static void main(String[] args) { 
    String text = args[1]; 
    MultiCharacterDisplay display = new MultiCharacterDisplay(text.length(), Color.GREEN); 
    display.setText(text); 
    JFrame frame = new JFrame(); 
    frame.setBackground(Color.black); 
    frame.getContentPane().setBackground(Color.black); 
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    frame.getContentPane().add(display); 
    frame.pack(); 
    frame.setVisible(true); 
} 

錯誤的代碼,因爲這一點我不知道,爲什麼,有人可以向我解釋嗎?

+0

爲什麼你跳過'ARGS [0]'?嘗試'的System.out.println(Arrays.toString(參數));' –

+0

喜,它甚至沒有任何東西打印出來 – Reynolds

+0

嘗試用命令行參數運行程序。你顯然不是。 –

回答

0

因爲在運行程序時,你是不是在傳遞命令行中至少有兩個參數。 1.在args [1]指您發送兩個參數,它們佔據的空間在0和1

由於@Elliot弗裏施指出,爲什麼你跳過空間0?如果你想運行它,你有現在的樣子,你需要在命令行Java MultiCharacterDisplay Test 1進入其中test 1可以是你想要的,只要你有兩句話讓他們佔據的空間0和1的陣列英寸

+0

謝謝這也是工作 – Reynolds

+0

如果你使用的是像NetBeans這樣的IDE,你不需要設置String text = args [1],你可以把無論你想在那裏的任何字符串。例如:String text =「Test 1」; – user1795832