2011-03-05 29 views
1

嘿傢伙,有很多來自你的幫助我設法寫這個漂亮的代碼(我是新的,這種令人興奮的.. :)) 而且我還不明白我該如何輸入此代碼。 首先,我在控制檯行(我正在使用Eclipse)中出現此錯誤: 在NumberConverter.main(NumberConverter.java:5)處的線程「main」java.lang.ArrayIndexOutOfBoundsException中出現異常: 。 這是什麼意思?在Java中輸入 - 它是如何工作的?

我只是想盯着它是否工作,我不能調用函數/程序如何。 我曾經以一種「舊時尚的方式」,就像在計劃中一樣,調用我寫的函數,看看是否發生了一些事情。它在java中如何工作?我們是否稱這個程序本身?功能?我們在什麼地方寫字? - 如果它能夠工作,我就會感到懊惱,無所謂,我很樂意知道如何插入輸入。 非常感謝!

public class NumberConverter{ 
public static void main(String[] args) { 
     int i = Integer.parseInt(args[0]); 
     toBinary(i); 
     toOctal(i); 
     toHex(i); 
    } 

    public static void toBinary(int int1){ 
     System.out.println(int1 + " in binary is"); 
     System.out.println(Integer.toBinaryString(int1)); 
    } 
    public static void toOctal(int int1){ 
     System.out.println(int1 + " in octal is"); 
     System.out.println(Integer.toOctalString(int1)); 
    } 

    public static void toHex(int int1){ 
     System.out.println(int1 + " in hex is"); 
     System.out.println(Integer.toHexString(int1)); 
    } 

}

+1

您需要在Eclipse中傳遞命令行參數。您可以通過'NumberConverter'類中的運行配置來完成此操作。 – zengr

回答

2

你必須爲app啓動設置參數。您可以在運行配置編輯器中執行此操作(右鍵單擊項目 - >運行方式 - >運行配置)。在Arguments選項卡中,您可以將其中一個設置爲Arguments字段。每行一個參數(例如5)。

ArrayIndexOutOfBoundsException發生是因爲您要採用空數組的第一個元素爲空args - args[0]。你不能這樣做,因爲如果沒有設置應用程序啓動參數,數組是空的。

+0

嗨米迦勒,我在參數選項卡中究竟做了什麼?謝謝。 –

+0

你必須點擊程序參數字段並編寫例如。 5.這個值將被傳遞給'args'。然後你可以通過'args'來訪問它。所以'args [0]'將包含「5」。 –

+0

謝謝michal! –

4

這意味着有一個ArrayIndexOutOfBoundsExceptionNumberConverter線5。這很可能將是這條線(如果完整源包含後跟一個空行包語句,這將是5號線):

int i = Integer.parseInt(args[0]); 

它試圖訪問你傳遞給程序的第一個參數,因爲您沒有將任何參數傳遞給該程序,arbs數組爲空,並嘗試訪問ArrayIndexOutOfBoundsException中的結果args[0]

如果你在命令行中運行這個,你就應該是這個樣子:

$ java com.mypackage.NumberConverter 1 

這裏$是提示,com.mypackage被推定爲包名和1是命令行參數,它你將能夠通過args [0]`訪問。

由於您使用的是eclipse,而不是通過命令行here is a nice blog post從eclipse中添加命令行參數。

1

ArrayIndexOutOfBoundsExceptions裝置(從JavaDoc的):

拋出,表明陣列已 已與非法索引訪問。 該索引爲負數或者 大於或等於 數組的大小。

從你的例外,args[0]拋出ArrayIndexOutOfBoundsExceptions因爲0大於或等於args.length。我的建議是找出操作系統返回到您的JVM的哪些參數,然後傳遞給您的應用程序,並查看是否初始化並填充了args[0]

另外,從Eclipse運行程序需要您通過Run Configurations設置參數。

1

ArrayIndexOutOfBoundsException當您嘗試訪問數組之外​​的索引時會引發。假設我有一個大小爲2的數組。我可以分別使用索引0和1來訪問第一個和第二個元素,但是如果我嘗試訪問索引4中的元素,則拋出異常:

public static void stam() { 
    int[] array = { 0, 1 }; 
    // this will print 0 
    System.out.println(array[0]); 
    // this will print 1 
    System.out.println(array[1]); 

    // this will crash the program 
    System.out.println(array[4]); 
} 

你的直覺是正確的,你可以很容易地使用輸入來測試你的程序,儘管使用一個字面值和一個變量可能更容易,當然也更靈活。在任何情況下,您都可以通過Run > Run Configurations...窗口設置運行配置以包含命令行參數。

正如您可能猜到的一樣,程序崩潰的原因是因爲您嘗試訪問類的第5行中的第一個命令行參數,但參數不在那裏,所以數組有0個元素。

使用命令行參數運行java程序的稍微更靈活的方法是調用不同類的main方法,並手動將其傳遞給String數組。但是如果你想快速測試你的方法,只需傳遞它們的字面值。

相關問題