我想知道如何比较传递给java main方法的参数。
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()而不是..
答案 0 :(得分:3)
您提供的代码甚至无法编译,但 工作:
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");
}
此时您正在检查args[0]
,即使数组的长度为0 。鉴于您此刻已经给出了伪代码(没有括号围绕条件),我想知道这是否是您真实代码中的问题。
(另请注意,正如其他人已经指出的那样,使用equals
代替==
。)
答案 1 :(得分:0)
是否有将字符串数组args中的字符串转换为字符串类型以便我可以比较它?
您无需转换它。但是,你做需要以正确的方式进行比较; e.g。
if (args.length == 0) {
// do something
} else if (args[0].equals("-i")) {
// do something else
}
(如果你使用==
来比较字符串,你可能会遇到麻烦。==
运算符会测试两个引用是否指向同一个对象。你真正需要的是看到如果两个字符串包含相同的字符...并且您需要使用equals
方法来执行此操作。)
但是,这并不能解释您获得IndexOutOfBoundsException
的原因。我需要看到真正的代码才能回答这个问题。
答案 2 :(得分:0)
比较字符串时,您需要使用 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);
}
}
}
尝试不带参数,参数或任何其他参数调用它。