public class Show {
public static void main (String args[]){
String str;
str = args[0];
System.out.println("name is" +str);
}
}
//错误是索引之外的数组怎么样?
答案 0 :(得分:1)
检查args.length是否大于0,如果是则继续返回(结束你的程序)。在调用程序时,需要传递程序参数,以使args数组为非空
public static void main (String args[]){
if(args.length > 0)
{
String str;
str = args[0];
System.out.println("name is" +str);
}
else
System.out.println("Args is empty!");
}
如果不检查args的大小并确保其大小大于或等于1,则以下调用args[0]
将使该数组超出范围异常,因为索引0不存在一个大小为0的数组
答案 1 :(得分:1)
每当您使用命令提示符运行Java程序或想要提供命令行参数时,都会使用“String [] args”。
所以基本上它需要你通过命令行输入。如果您不使用命令行参数,那么它对您的代码没有任何意义。
例如。您的类名是“abc”,然后命令调用将是
javac [filename] .java
java abc 1 2 3
Javac用于编译源代码。
然后下一行调用你的类“abc”并发送“1 2 3”作为参数,它们存储在“String [] args”中,即args [0]将具有“1”,args [1]将具有“ 2“和args [2]将有”3“。
因此,如果您没有传递任何内容,则字符串[]仍为空,并且您正在尝试访问第0个元素,这就是为什么它会向您显示数组索引超出范围的异常。
答案 2 :(得分:0)
如果没有(没有命令行参数)而你拿第一个([0]
),那是不可能的。考虑这样的事情:
public class Show {
public static void main (String args[]){
if (args.length == 0) { showHelp(); return; }
String str;
str = args[0];
System.out.println("name is" +str);
}
private static void showHelp() {
System.out.println("Please provide at least one command line argument.");
}
}