赋值的左侧必须是可变CharAt

时间:2012-07-06 00:51:34

标签: java string variable-assignment

我目前有以下java代码。

public class lesson8
{
    static Console c;           // The output console

    public static void main (String[] args)
    {
        c = new Console ();

        String user;
        int length, counter, spacecounter;
        spacecounter=0;
        c.print("Enter a string. ");
        user = c.readLine();

        length = (user.length()-1);

        for (counter=0;counter<length;counter++) 
        {
            if (user.charAt(counter) = "") 
            {
                spacecounter++;
            }
        }

        c.println("There are "+spacecounter+" spaces in your string.");
        c.println("There are "+counter+" characters in your string.");

        // Place your program here.  'c' is the output console
        // main method
    }
}

我在这部分收到错误:

        if (user.charAt(counter) = "") 

错误是

  

作业的左侧必须是变量。

我将其更改为“==”,但现在又出现了另一个错误:

  

左子句“char”的类型与右子句“java.lang.String”的类型不兼容。

我该如何解决这个问题?

谢谢!

5 个答案:

答案 0 :(得分:7)

所以,之所以

if (user.charAt(counter) = "") 

给出的错误是“=”是java中的赋值运算符,因此左侧必须是变量。话虽这么说,你可能真的想要

if (user.charAt(counter) == ' ')

使用比较运算符(==)和空格字符('')。 (“”是一个空字符串)

答案 1 :(得分:2)

您在比较运算符上使用了对齐方式。

更改

if (user.charAt(counter) = "") 

if (user.charAt(counter) == "")  

更新:
您再次比较时也会出错。 您还应该使用single quotes ( ' )来比较char,否则它将无法编译。

if (user.charAt(counter) == '')  

但是这也不会被编译为长度char未定义 你应该比较一个有效的字符,比如说' space

答案 2 :(得分:1)

您希望使用等于运算符==,而不是赋值运算符=

答案 3 :(得分:1)

“==”将确保右侧的值与左侧的变量相同。

“=”是一个赋值运算符,用于给变量赋值,而不是比较它。

答案 4 :(得分:0)

我的代码中出现了同样的错误。添加括号解决了该错误

更改
if(isNotNullorEmpty(operator)) 
                ArrayList<String> result =  getOperatorAndTypeforName(name );

if(isNotNullorEmpty(operator)){ 
                ArrayList<String> result = getOperatorAndTypeforName(name );
}