Java 2维数组的字符串错误

时间:2015-04-25 03:20:32

标签: java

public class RobotZoneClass implements RobotZone {
    String[][] map;

    public RobotZoneClass(int rows, int columns){
        map= new String[rows][columns];
    }

    public void readMap(String map,int row) {
        for(int i=0;i<map.length()-1;i++){
            map[row][i]=map.charAt(i);
        }
    }
}

我收到错误:The type of expression must be an array type but it resolved to String.  为什么会这样?

3 个答案:

答案 0 :(得分:1)

您的本地变量String mapreadMap方法的第一个参数)隐藏了您的类变量map,因此编译器抱怨您正在访问String阵列。如果要在第一个参数中传递String,则它必须具有不同的变量名称。您的方法可以这样修复:

public void readMap(String value, int row) {
    for(int i=0; i<value.length()-1; i++) {
        map[row][i] = value.charAt(i);
    }
}

您的for循环结束条件也可能存在错误。我怀疑你真的是i<value.length();,除非你真的需要忽略最后一个角色。

答案 1 :(得分:1)

试试这段代码,

public class Maps{
    static String[][] map;
    public static void main(String args[]) {

    RobotZoneClass(2, 2);

    }
    public static void RobotZoneClass(int rows, int columns){
        map= new String[rows][columns];
        map[1][1]="E";
        System.out.println(map[1][1]);
    }
}

答案 2 :(得分:0)

您是shadowing全局map变量:

  

在计算机编程中,当在特定范围内声明的变量(决策块,方法或内部类)与在外部范围内声明的变量具有相同的名称时,会发生变量阴影。

将参数重命名为readMap

public void readMap(String otherMap,int row) {
    for(int i=0;i<map.length()-1;i++){
        map[row][i]=otherMap.charAt(i);
    }
}

此外,当你想要的只是一个二维字符 array,就像一个字符串数组。

试试这个:

public class RobotZoneClass implements RobotZone {
    String[] map;

    public RobotZoneClass(int rows){
        map = new String[rows];
    }


    public void readMap(String newRow, int row) {
        // replaces row in map
        map[row]=newRow;
    }

    // rest of implementation
}