缺少带有for循环的return语句

时间:2014-11-02 15:38:50

标签: java arrays

我有一个二维布尔数组'poorSignal',需要编写一个返回网格的方法,如果数组上的某个点为真,则显示X,如果为false,则显示O.这是我的代码:

    public String display()
{
    for(int i = 0; i < mapSize; i++)
    {
        for(int j = 0; j < mapSize; j++)
        {
            if(poorSignal[i][j] = true)
            {
                return "O ";
            }
            else
            {
                return "X ";
            }
        }
        return "\n";
    }
}

当我编译时,它在方法的最后一行给出了'缺少返回语句'。我也不确定'return'\ n“是否可以在打印数组时添加新行。

这是一个分配的问题,所以我不能直接打印它或只是打印布尔值 - 它必须是一个产生网格的方法。

3 个答案:

答案 0 :(得分:2)

编译器无法知道循环是否实际运行,因此您还必须在外循环外部有一个return语句。

但是,如果我查看你的代码,我不确定返回是否是你真正想要的。如果您打算打印整个矩阵,则可能需要使用StringBuilder,然后在循环内使用append方法。在外部循环之后,使用toString方法返回构建器的字符串表示形式,如下所示:

StringBuilder sb = new StringBuilder();
// loop
sb.append(someValue); 
sb.append('\n');
// after loop
return sb.toString();

答案 1 :(得分:0)

在我看来,您不希望为每次通话返回值。更好的是创建一个StringBuilder并在StringBuilder中构建一个网格(在每次外部迭代后使用newLine),然后在循环外部返回构造的StringBuilder的toString。

无论如何,如果你的mapSize为0,你永远不会得到任何return语句(因为它的运行时数据,编译器无法知道参数大小。

public String display(){
  StringBuilder sb = new StringBuilder();
  for(int i = 0; i < mapSize; i++){
    for(int j = 0; j < mapSize; j++){
        if(poorSignal[i][j]){ //don't use comparing to true if you have stored boolean values
            sb.append("O ");
        }else{
            sb.append("X ");
        }
    }
    sb.append("\n");
  }
  return sb.toString;
}

答案 2 :(得分:0)

当函数到达第一个返回时,它将返回该值并退出。你应该这样做:

public String display(int i, int j) {
    if(poorSignal[i][j]) {
        return "O \n";
    }
    return "X \n";
}

并称之为:

for(int i = 0; i < mapSize; i++) {
    for(int j = 0; j < mapSize; j++) {
        someStringVariable[i][j] = display(i, j);
    }
}

这样,当poorSignal [i] [j]为真时,它将返回&#34; O \ n&#34;并停止执行剩下的功能。如果是假,它将执行另一个返回。另请注意&#34; poorSignal [i] [j]&#34;而不是&#34; poorSignal [i] [j] = true&#34;,它实际上将为trueSignal [i] [j]赋值为true,如果成功则返回true,它可能总是如此。你可以写&#34; poorSignal [i] [j] == true&#34;,但poorSignal已经是一个布尔值,所以&#34; == true&#34;部分没有添加任何有趣的东西。