public class TestSample {
public static void main(String[] args) {
System.out.print("Hi, ");
System.out.print(args[0]);
System.out.println(". How are you?");
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译这个程序时,我收到此错误:
线程"main"中的异常java.lang.ArrayIndexOutOfBoundsException:0
另外,为什么我不能args接受这样的int数组:
public static void main(int[] args) {
Run Code Online (Sandbox Code Playgroud)
1. ArrayIndexOutOfBoundsException:0
抛出它是因为args.length == 0因此args[0]超出了有效索引的数组范围(了解有关数组的更多信息).
添加检查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?");
}
}
Run Code Online (Sandbox Code Playgroud)
2.命令行args为int
您必须将参数解析为int[]自己,因为命令行参数仅作为a传递String[].为此,请使用Integer.parseInt(),但您需要进行异常处理以确保解析正常(了解有关异常的更多信息).Ashkan的回答告诉你如何做到这一点.
关于你问题的第二部分:
来自http://download.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html:
解析数字命令行参数
如果应用程序需要支持数字命令行参数,则它必须将表示数字的String参数(例如"34")转换为数字值.这是一个将命令行参数转换为int的代码片段:
Run Code Online (Sandbox Code Playgroud)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); } }