Java:行args [0] .length可能吗?

时间:2014-03-02 17:30:12

标签: java command-line-arguments

我想知道java行if (args[0].length > 2)是否是有效行。我正在接受命令行参数,我想知道第一个数组中的数字量是否超过两位数。例如,2014年将允许if语句为真。如果用户的输入是例如52,则if语句将不成立,并且它将移至下面的else if语句中。

5 个答案:

答案 0 :(得分:5)

如果 args被声明为String[][],那么这是一个有效的行 - 但这不是一个main方法的声明方式。 length数组的有效成员,但它不是String类的(公共)成员。

如果您要检查字符串的长度,则需要length() 方法。例如:

if (args[0].length() > 2)

您可能需要首先使用args.length检查是否某些参数。例如:

public static void main(String[] args) {
    if (args.length == 0) {
        System.out.println("You need to give me an argument!");
        return;
    }
    if (args[0].length() > 2) {
        System.out.println("The first argument has more than 2 characters");
    } else {
        System.out.println("The first argument has 0-2 characters");
    }
}

答案 1 :(得分:1)

是的,您可以使用String#length()方法,我认为应该添加null检查

if (args[0]!=null && args[0].length() > 2)

答案 2 :(得分:0)

如果args[0]是一个数组且不是null那么

if (args[0].length > 2)

是一个有效的选项。

答案 3 :(得分:0)

 if (args[0].length > 2)

invalid表达式bcoz String不包含任何长度字段。

更改为

if (args[0].length() > 2)获取String的长度

答案 4 :(得分:0)

您正在谈论命令行参数,所以......

  

我想知道java行“if(args [0] .length> 2)”是否是有效行。

没有。 argsString[],因此args[0]StringString没有length公共静态字段。

然而:

  

我想知道第一个数组中的数字量是否超过两位数

因此,如上所述,args[0]String这不是阵列!。例如,与C不同,Stringchar[]没有“直接映射”。事实上,C没有像String那样的东西。使用Java,您必须使用.toCharArray()char[]获取String

如果你想查找String是否有两个以上的数字,那么你应该写:

if (args[0].matches("[0-9]{2,}"))

这将检查字符串是否长2个字符或更长,并且其中的所有字符都是数字。

这使用regular expression来检查你的论点。如果正则表达式成功,则可以使用:

转换为整数
Integer.parseInt(args[0])

如果没有溢出!