Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 如何在varargs中测试arg_Java - Fatal编程技术网

Java 如何在varargs中测试arg

Java 如何在varargs中测试arg,java,Java,我有一个接受varargs的方法: public static void main(String... args) throws Exception { 我试图根据是否传递参数来设置变量的值。在本例中,我想知道是否传递了第8个参数,如果传递了,则将变量的值设置为该参数的值,否则使用空字符串。我无法在布尔真结果部分的args[8]中硬编码,因为在仅使用7个参数运行时,这会导致编译错误。因此,我尝试了以下方法,但也出现了错误: String titlePrefix = ((args.length!

我有一个接受varargs的方法:

public static void main(String... args) throws Exception {
我试图根据是否传递参数来设置变量的值。在本例中,我想知道是否传递了第8个参数,如果传递了,则将变量的值设置为该参数的值,否则使用空字符串。我无法在布尔真结果部分的args[8]中硬编码,因为在仅使用7个参数运行时,这会导致编译错误。因此,我尝试了以下方法,但也出现了错误:

String titlePrefix = ((args.length!=8) ?  "" : args[args.length]);
在这种情况下,测试参数是否已传递并仅在已传递时使用其值的正确方法是什么?我知道,如果这个方法超过8个参数,上面的问题会给我带来麻烦,但是现在,让我们假设它永远不会超过8个参数


提前谢谢。

args[args.length]应该是args[args.length-1]

String titlePrefix=((args==null | | args.length检查这个。我想这正是您要找的

String titlePrefix = ((args == null || args.length<8) ?  "" : args[7]);
public class Test001 {

    public static void main(String... args) throws Exception {
        for (int i=0; i<8; i++){
            String val = args.length <= i ? "" : args[i];
            System.out.println("arg[" + i + "] = [" + val + "].");
        }
    }

}
公共类Test001{
公共静态void main(字符串…参数)引发异常{

对于(int i=0;您关心“第8个参数”这一事实意味着您使用varargs是错误的。如果您的方法需要基于7或8个参数执行不同的操作,请编写两个方法并命名您的方法参数。当存在
8
参数时,它将始终给出错误。它应该是
args[args.length-1]迈克,谢谢。我不知道我能超载“main”。我以前从来没有想过要这么做,所以我学到了一些新的东西。谢谢。事实上,你不能超载<代码> main <代码>。JVM考虑的唯一入口点是带有签名的代码>公共静态空格main(String)[ARGs ]。
这与
public static void main(String…args)
相同。谢谢!就是这样。我尝试过调整零基数,但错误地使用了args[args.length]-1)而不是args[args.length-1]。谢谢你的好眼力。彼得,谢谢你,但这需要通过args循环,在我的情况下,这是不必要的。我只有一个可选的论点,我需要测试。谢谢。哦,好吧……我给了你一个更一般的解决方案。真的怀疑论者,这也是一个伟大的解决方案(如果少于7个参数,它为什么会导致错误?如果少于7个参数,它会将“”指定给
titlePrefix
。为什么会出现错误?args[7]将导致编译错误。这就是为什么我使用args.lengthHow测试它?它不会导致错误,因为条件为true,因此将选择条件表达式的第一部分。