Java主方法参数处理,取决于用户输入
我想知道如何比较传入java主方法的参数Java主方法参数处理,取决于用户输入,java,arrays,arguments,main,Java,Arrays,Arguments,Main,我想知道如何比较传入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
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()
是否需要将字符串数组args中的字符串转换为字符串类型,以便进行比较
public static void main(String[] args) {
if args.length == 0 {
do something
}
else if args[0] =="-i"
do something
}
}
你不需要转换它。然而,你确实需要以正确的方式进行比较;e、 g
if (args.length == 0) {
// do something
} else if (args[0].equals("-i")) {
// do something else
}
(如果使用==
来比较字符串,则可能会遇到麻烦。=
操作符测试两个引用是否指向同一对象。实际需要的是查看两个字符串是否包含相同的字符…并且需要使用equals
方法来执行此操作。)
然而,这并不能解释为什么您会得到
索引自动边界异常
。我需要看真实的代码来回答这个问题
是否需要将字符串数组args中的字符串转换为字符串类型,以便进行比较
public static void main(String[] args) {
if args.length == 0 {
do something
}
else if args[0] =="-i"
do something
}
}
你不需要转换它。然而,你确实需要以正确的方式进行比较;e、 g
if (args.length == 0) {
// do something
} else if (args[0].equals("-i")) {
// do something else
}
(如果使用==
来比较字符串,则可能会遇到麻烦。=
操作符测试两个引用是否指向同一对象。实际需要的是查看两个字符串是否包含相同的字符…并且需要使用equals
方法来执行此操作。)
然而,这并不能解释为什么您会得到
索引自动边界异常
。我需要查看真实的代码来回答这个问题。您给出的代码甚至无法编译,但这确实有效:
请注意,在此处使用else
非常重要-这将失败,例如:
if (args.length == 0) {
System.out.println("No arguments!");
}
if (args[0].equals("-i")) {
System.out.println("-i passed");
}
此时,您正在检查args[0]
,即使数组的长度为0。考虑到您目前已经给出了伪代码(条件周围没有括号),我想知道您的真实代码中是否存在这个问题
(还要注意使用
equals
而不是其他人已经指出的=
。您给出的代码甚至无法编译,但这确实有效:
请注意,在此处使用else
非常重要-这将失败,例如:
if (args.length == 0) {
System.out.println("No arguments!");
}
if (args[0].equals("-i")) {
System.out.println("-i passed");
}
此时,您正在检查args[0]
,即使数组的长度为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);
}
}
}
尝试在没有参数的情况下调用它,参数优先或任何其他参数。在比较字符串时,如果它们是相同的字符串,则需要使用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);
}
}
}
尝试在没有参数的情况下调用它,先使用参数或任何其他参数。您需要向我们显示实际代码。要检查字符串是否相等,必须使用
equals
。另外,在else
子句中,您使用arg
而不是args
。稍微偏离主题,但不要使用“==”来比较字符串。比较参考文献;使用“-i”.equals(args[0])
。由于编写此类代码非常繁琐,许多开发人员都创建了自己的库类来处理main
方法的参数。可以找到我自己的库类,它允许您简单地指定允许使用名为“i”的标志,然后允许您在调用Java应用程序时检查是否提供了该标志。您需要向我们显示实际代码。要检查字符串是否相等,必须使用equals
。另外,在else
子句中,您使用arg
而不是args
。稍微偏离主题,但不要使用“==”来比较字符串。比较参考文献;使用“-i”.equals(args[0])
。由于编写此类代码非常繁琐,许多开发人员都创建了自己的库类来处理main
方法的参数。可以找到我自己的库类,它允许您简单地指定允许使用名为“i”的标志,然后允许您在调用Java应用程序时检查是否提供了该标志。谢谢。。我知道这是个业余问题。。已经在asp.net中编码3年了,我的java已经变得如此生疏。@JohnMarston:java和C之间的区别解释了==
vsequals
,但它没有解释为什么你会有索引自动边界异常
-你只是错过了其他
?谢谢。。我知道这是个业余问题。。已经在asp.net中编写代码3年了,而我的java已经变得如此生疏。@JohnMarston:java和C之间的差异解释了==
与等于,但它没有解释为什么你会有索引自动边界异常
-你只是错过了其他
?