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.
为什么会这样?
答案 0 :(得分:1)
您的本地变量String map
(readMap
方法的第一个参数)隐藏了您的类变量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
}