java可选参数错误传输错误

问题描述 投票:0回答:2

我试着在命令行输入以下内容:java class name 10 -obut it has to work without the -o.

public static void main (String[] args){
    int n = Integer.parseInt(args[0]);
    String a;
    if (args[1] != "-o" || args[1] == null) {
         a = "emtpy";
      }
}
public static void p(int n, String a){ 

当我在不使用-o的情况下进行操作时,总是会出现这样的错误:不幸的是,这个错误总是会出现。Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1 at class name.main(eratosthenes.java:4)

java
2个回答
1
投票

不要测试 String 与...平等 != 并做检查 args.length (非为 null).

if (args.length > 1 && !args[1].equals("-o")) {
    a = "empty";
}

1
投票

args的大小是在你运行java命令后决定的,所以它会被初始化成这样。

String args[1] = {"10"};

所以,你必须检查args的大小 (args.length).

另外,我建议你总是检查它的大小,因为如果你在没有任何输入参数的情况下运行java命令,它将在第一行抛出NPE main 方法。

实施例。

int n;
String a;
if (args.length == 0) {
    n = 0;
    a = "empty"
} else if (args.length == 1) {
    n = Integer.parseInt(args[0]);
    a = "empty"
} else {
    n = Integer.parseInt(args[0]);
    a = args[1];
}
// other code here
p(n,a); // call the method you want

当然,这不是最聪明的,但它会工作。

另外,看来你是个java初学者,我建议你先看一些java指南,然后再开始调试:)。

© www.soinside.com 2019 - 2024. All rights reserved.