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
另外,为什么我不能有args
接受这样的int数组:
public static void main(int[] args) {
答案 0 :(得分: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)。 Ashkan的回答告诉你如何做到这一点。
答案 1 :(得分:5)
关于你问题的第二部分:
来自http://download.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html:
解析数字命令行参数
如果应用程序需要支持数字命令行参数,那么 必须转换表示数字的String参数,例如“34”, 到数值。这是一个转换a的代码段 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); } }
答案 2 :(得分:4)
public static void main(String[] args)
而不是public static void main(int[] args)
,如果你想要整数,你需要从参数中解析它们。