Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java主方法参数处理,取决于用户输入_Java_Arrays_Arguments_Main - Fatal编程技术网

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

我想知道如何比较传入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()

是否需要将字符串数组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之间的区别解释了
==
vs
equals
,但它没有解释为什么你会有
索引自动边界异常
-你只是错过了
其他
?谢谢。。我知道这是个业余问题。。已经在asp.net中编写代码3年了,而我的java已经变得如此生疏。@JohnMarston:java和C之间的差异解释了
==
等于
,但它没有解释为什么你会有
索引自动边界异常
-你只是错过了
其他