我想知道如何比较传递到java主方法中的参数。
eg java hello -i
我试着打印args[0],它确实给了我-I。然而,我想要实现的是:
if args.length == 0 {
do something
}
else if args[0] =="-i"{
do something
}
然而,我一直在获取超出绑定异常的索引。是否可以将字符串数组args中的字符串转换为字符串类型,以便进行比较?
public static void main(String[] args) {
if args.length == 0 {
do something
}
else if args[0] =="-i"
do something
}
}
例如,如果他们在没有任何参数的情况下启动程序,我将调用init()方法。但如果他们输入-i作为参数,我将调用install()。。
您给出的代码甚至不会编译,但这确实有效:
public class Test {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("No arguments!");
} else if (args[0].equals("-i")) {
System.out.println("-i passed");
} else {
System.out.println("Something else");
}
}
}
请注意,在这里使用else
是很重要的——这将失败,例如:
if (args.length == 0) {
System.out.println("No arguments!");
}
if (args[0].equals("-i")) {
System.out.println("-i passed");
}
此时,即使数组的长度为0,也要检查args[0]
。考虑到您目前已经给出了伪代码(条件周围没有括号),我想知道这是否是真实代码中的问题。
(还要注意使用equals
而不是其他人已经指出的==
。)
在比较字符串时,如果它们是相同的字符串(与相等时不同),则需要使用equals()方法作为==比较。
这里有一个的例子
public static void main(String[] args) {
if (args.length == 0) {
System.err.println("No arguments");
} else if (args.length == 1) {
if (args[0].equals("first")) {
System.err.println("The argument equals 'first'");
} else {
System.err.println("Don't know what you want with " + args[0]);
}
} else {
System.err.println("Will not use the arguments");
for (String arg: args) {
System.err.println(arg);
}
}
}
试着在没有参数的情况下调用它,先调用该参数或任何其他参数。
是否可以将字符串数组args中的字符串转换为字符串类型,以便进行比较?
你不需要转换它。然而,你do需要以正确的方式进行比较;例如
if (args.length == 0) {
// do something
} else if (args[0].equals("-i")) {
// do something else
}
(如果你用==
来比较字符串,你很可能会遇到麻烦。==
操作符测试两个引用是否指向同一个对象。你实际上需要的是看看两个字符串是否包含相同的字符……你需要用equals
方法来做这件事。)
然而,这并不能解释你为什么会得到IndexOutOfBoundsException
。我需要看到真实的代码来回答这个问题。