1

我目前有以下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”的类型不兼容。

我将如何解决这个问题?

谢谢!

4

5 回答 5

7

那么,之所以

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

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

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

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

于 2012-07-06T00:57:33.727 回答
2

您正在对比较运算符使用赋值。

改变

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

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

更新:
您在比较时也有错误。您还应该使用single quotes ( ' )来比较 a char,否则它不会被编译。

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

但这也不会被编译,因为没有定义长度字符。
您应该比较一个有效字符,例如 ' ' 表示空格

于 2012-07-06T00:54:50.373 回答
1

您想使用相等运算符==,而不是赋值运算符=

于 2012-07-06T00:53:28.407 回答
1

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

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

于 2012-07-06T00:54:47.037 回答
0

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

从改变

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

if(isNotNullorEmpty(operator)){ 
                ArrayList<String> result = getOperatorAndTypeforName(name );
}
于 2019-09-02T03:11:14.450 回答