为什么我收到一条错误,说找不到变量长度?

时间:2016-03-13 00:36:32

标签: java

我不确定为什么它认为这是一个变量。

public boolean check(String arg) {
    if (arg.length = 4) {
        return true;
    }
}

另外,如果我想添加另一个条件,例如字符串的长度必须等于4并且必须有一个整数作为第一个字符,我将如何链接两个'if'语句?

4 个答案:

答案 0 :(得分:4)

length()String的方法,而不是变量。此外,您还需要使用==来比较arg.length()4的结果,=用于分配:

public boolean check(String arg) {
    if (arg.length() == 4){
        return true;
    }
}

答案 1 :(得分:2)

您需要使用' =='运算符将字符串的长度与常量进行比较。

return arg.length() == 4;

使用以下方法组合逻辑表达式:

||  for 'or'
&& for 'and'

您可以使用Character.isDigit查看第一个字符是否为数字。给你最后的表达:

return arg.length() == 4 && Character.isDigit(arg.charAt(0));

答案 2 :(得分:2)

问题第一部分的答案是:

  1. 字符串的长度不是字段。使用arg.length()获取字符串的长度。错误消息是"无法找到变量长度",因为arg.length正在尝试访问String API中不存在的String字段。

  2. 您可以使用==equals方法进行比较,而不是==运算符是赋值运算符。

  3.   

    如果我想添加另一个条件,例如字符串的长度必须等于4并且必须有一个整数作为第一个字符,我将如何链接两个'如果'语句?

    有两个答案:

    if (arg.length() == 4 && Character.isDigit(arg.charAt(0)) {
        return true;
    }
    // do more stuff
    

    if (arg.length() == 4) {
        if (Character.isDigit(arg.charAt(0)) {
            return true;
        }
    }
    // do more stuff
    

    在此示例中,第一个表单更具可读性(对于有经验的Java程序员),因此建议使用。在更复杂的示例中,使用嵌套的if语句可能更好。

    还有其他几点要做:

    public boolean check(String arg) {
        if (arg.length() == 4) {
            return true;
        }
    }
    

    是编译错误。 Java编译器将告诉您(实际上)check方法的返回路径之一不返回值。如果长度不是4,会发生什么?代码没有说明是否要返回truefalse

    如果我们重写如下:

    public boolean check(String arg) {
        if (arg.length() == 4) {
            return true;
        } else {
            return false;
        }
    }
    

    代码现在将编译。但是,任何有经验的Java程序员都会指出你已经使用了5行代码来做一些只能在一行中完成的事情。

    public boolean check(String arg) {
        return arg.length() == 4;
    }
    

答案 3 :(得分:0)

您可以使用逻辑运算符执行任务。

 return arg.length() == 4 && Character.isDigit(arg.charAt(0));

另外,为了清理问题,您可以返回if语句,而不是测试条件是否为真并返回true。