2011-12-07 56 views
-2

我知道這是一個簡單的問題,但它會產生一些不尋常的問題。簡單的命令行程序拋出異常

public static void main(String [] st) { 

    System.out.println("\n\n Arg: :"+st.length); 
    for(int i=0;i<st.length;i++) { 
     System.out.println("ARGUMENTS: "+st[i]); 
    } 
} 

這個程序只打印 「精氨酸:0」 作爲輸出

我也曾嘗試

String s= st[0]; 
System.out.println("\n String: "+s); 

但它拋出異常。 所以請幫我解決這個問題。

+9

什麼問題 - 沒有任何爭論。你在命令行上傳遞任何東西嗎? –

+0

這個程序我以前運行過,但現在它會產生問題,st []不需要初始化。 – Deep

+0

你能否粘貼異常,NullPointException ..? –

回答

0

我認爲這是抱怨,你有一個索引超出界限的異常,這意味着當你沒有這樣的字符串時你試圖訪問索引0字符串。

兩種方法可以工作,這一點是看在異常小心(假設你知道這意味着什麼),或通過代碼在調試器這將使這個清晰的步進。

+0

現在,它正在運行,它是Eclipse中JDK的問題配置。感謝您的所有答案。 – Deep

1

如果不傳遞任何參數的程序,當您啓動它,然後st將是空的。因此試圖引用數組中的第一項將會拋出一個NullPointerException

+0

最近也嘗試這個由邁克爾·布魯爾 - 戴維斯的建議(一個String:ST) \t { 的System.out.println(S); \t \t \t}但是它不會顯示Enythig。 – Deep

1

查看command line argsarrays教程。與C和其他一些語言

一個特別不同的是,節目名稱本身並不是一個參數,所以當一個C main功能總是至少有一個說法,一個Java main沒有。