Java:设置字符串中字符位置的值时收到意外类型错误(Required:Variable;Found:Value)

2022-06-24 00:00:00 char java
public static void octIn(String[] input, String octString)
    {
        String strString, biString;
        String[] str = new String[2];
        //Octal to Binary
        biString = Integer.toBinaryString(Integer.parseInt(octString, 8));
        //Binary to String
        String[] bi = splitBi(biString);
        for (int i = 0; i < 3; i++)
        {
            for (int x = 0; x < 3; x++)
            {
                if (bi[i].charAt(x) == 0)
                    str[i].charAt(x) = '-';
                else 
                {
                    switch(x)
                    {
                        case 0:
                            str[i].charAt(x) = 'r';
                            break;
                        case 1:
                            str[i].charAt(x) = 'w';
                            break;
                        case 2:
                            str[i].charAt(x) = 'x';
                            break;
                    }
                }
            }
        }
    }

我想知道为什么会出现以下错误,以及如何修复它:

ACSL1.java:36: error: unexpected type
                bi[i].charAt(x) = '1';
                            ^
  required: variable
  found:    value

注意:正在显示其他内容,但我认为也显示这些内容将是多余的。


解决方案

str[i].charAt(x)char值,不是变量。你不能给它赋值。类似于写'a' = '1';

无论如何,字符串是不可变的,所以您不能修改它的字符。 如果希望str[i]具有新的字符串值,则必须创建一个新字符串(例如,通过将字符追加到StringBuilder)并将新字符串分配给str[i]

    for (int i = 0; i < 3; i++)
    {
        StringBuilder sb = new StringBuilder();
        for (int x = 0; x < 3; x++)
        {
            if (bi[i].charAt(x) == 0)
                sb.append('-');
            else 
            {
                switch(x)
                {
                    case 0:
                        sb.append('r');
                        break;
                    case 1:
                        sb.append('w');
                        break;
                    case 2:
                        sb.append('x');
                        break;
                }
            }
        }
        str[i] = sb.toString();
    }

相关文章