Java主方法参数处理,取决于用户输入



我想知道如何比较传递到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。我需要看到真实的代码来回答这个问题。

相关内容

  • 没有找到相关文章

最新更新