for循环java没有正确执行?

时间:2016-03-16 14:09:47

标签: java arrays loops for-loop multidimensional-array

//Declared here the atributes int id and int [9][5] array.

public String getPos(int id){
String res = "";
for(int i = 0; i <9 ;i++ ){
    for(int j = 0; j<5 ;j++){
        if(this.arr[i][j] == id)
              res = res + i + "," + j;  
    }
}
return res;
}

当我运行getPos(1)时;结果是8,2但我想要它打印9,3。我是怎么做到的?

1 个答案:

答案 0 :(得分:1)

Java索引总是从0开始。所以0,0将是第一个元素。

只需在两个找到的索引中添加1即可返回。

另外:可以在多个位置找到“id”,还是它是唯一的?

如果它是唯一的并且你总是希望结果返回为“x,y”,那么你应该在找到id时立即返回:

public String getPos(int id){
for(int i = 0; i <9 ;i++ ){
    for(int j = 0; j<5 ;j++){
        if(this.arr[i][j] == id)
              return (i+1) + "," + (j+1);  
    }
}

如果可以多次找到id,则必须考虑如何标记这些多个结果,因为当前您的程序可能会返回类似“1,56,2”的内容(如果在两者都找到提供的id, 5和6,2)

类似的东西:

public String getPos(int id){
String res = "";
for(int i = 0; i <9 ;i++ ){
    for(int j = 0; j<5 ;j++){
        if(this.arr[i][j] == id)
              res = res +"["+ (i+1) + "," + (j+1)+"]";  
    }
}
return res;

^ - 将返回“[1,5] [6,2]”,将结果包装在大括号中并使其更具可读性。