2011-09-12 222 views
1
public class TestSample { 
    public static void main(String[] args) { 
     System.out.print("Hi, "); 
     System.out.print(args[0]); 
     System.out.println(". How are you?"); 
    } 
} 

當我編譯這個程序,我得到這個錯誤:異常線程 「main」 java.lang.ArrayIndexOutOfBoundsException:0

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0


而且,我爲什麼不能有一個args它接受一個int陣列是這樣的:

public static void main(int[] args) { 

回答

8

1 ArrayIndexOutOfBoundsException異常:0

它被拋出,因爲args.length == 0因此args[0]是外數組有效索引範圍(learn more about arrays)。

添加支票args.length>0來修復它。

public class TestSample { 
    public static void main(String[] args) { 
     System.out.print("Hi, "); 
     System.out.print(args.length>0 ? args[0] : " I don't know who you are"); 
     System.out.println(". How are you?"); 
    } 
} 

2.命令行參數爲INT

你必須將自己的參數解析到int[]作爲命令行參數傳遞僅作爲String[]。要做到這一點,請使用Integer.parseInt(),但您需要異常處理以確保解析正常(learn more about exceptions)。阿什坎的答案告訴你如何做到這一點。

4
  1. 該錯誤是因爲沒有程序啓動時添加了參數。
  2. 由於被調用的主要方法(由JVM)的簽名是public static void main(String[] args)而不是public static void main(int[] args)如果您需要整數,您需要從參數中解析它們。
5

有關於你問題的第二部分:

http://download.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html

Parsing Numeric Command-Line Arguments

If an application needs to support a numeric command-line argument, it must convert a String argument that represents a number, such as "34", to a numeric value. Here is a code snippet that converts a command-line argument to an int:

int firstArg; 
if (args.length > 0) { 
    try { 
     firstArg = Integer.parseInt(args[0]); 
    } catch (NumberFormatException e) { 
     System.err.println("Argument must be an integer"); 
     System.exit(1); 
    } 
} 
相關問題