当前位置: 首页 > 知识库问答 >
问题:

缺少for循环的返回语句

白信鸿
2023-03-14

我有一个二维布尔数组“poorSignal”,需要编写一个返回网格的方法,如果数组上的一个点为真,则显示X,如果为假,则显示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";
    }
}

当我编译时,它在方法的最后一行给出了“missing return statement”。我也不确定“return”\n在打印阵列时是否可以添加新行。

这是一个赋值问题,所以我不能直接打印它,也不能只打印布尔值——它必须是一个生成网格的方法。

共有3个答案

罗浩然
2023-03-14

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

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]为真时,它将返回O\n并停止执行其余功能。如果为false,则执行另一个返回。还要注意"poorSignal[i][j]",而不是"poorSignal[i][j]=true",这实际上会将true赋值给poorSignal[i][j],如果成功,则返回true,这可能总是如此。您可以编写"poorSignal[i][j]==true",但是poorSignal已经是一个布尔值,所以"==true"部分没有添加任何有趣的内容。

翟俊茂
2023-03-14

在我看来,您不想为每个调用返回值。更好的方法是创建一个StringBuilder,并在StringBuilder内部构造一个网格(每次外部迭代后使用换行符),然后在循环外部返回构造的StringBuilder的字符串。

无论如何,如果mapSize为0,则永远不会得到任何返回语句(而且作为运行时数据,编译器无法知道参数大小)。

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;
}
夏俊杰
2023-03-14

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

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

StringBuilder sb = new StringBuilder();
// loop
sb.append(someValue); 
sb.append('\n');
// after loop
return sb.toString();
 类似资料:
  • 我可以找到类似的问题,但我找不到我对这个特定案例期望的答案。 当我执行这段代码时,我得到一个编译错误,上面写着“缺少返回语句”。但是,据我所知,很明显,for循环中的代码将毫无疑问地执行,因为第一次,x=0。因此,对于这种特殊情况,没有理由不在for循环中执行代码。那么,为什么我们还需要在for循环之外声明一个额外的return语句呢?。

  • 你好我已经想尽一切办法弄清楚为什么返回语句没有被识别。如果我把“回报余额”放在其他地方,它会说系统。出来无法访问println。。。你们谁能帮我解释一下为什么这可能不起作用??非常感谢。

  • 问题内容: 我有一个二维布尔数组’poorSignal’,需要编写一个返回网格的方法,如果数组上的某个点为true,则显示X,如果为false,则显示O。这是我的代码: 当我编译时,它在方法的最后一行给出了“丢失的返回语句”。我也不确定在打印数组时’return“ \ n”是否可以添加新行。 这是一个分配问题,所以我不能直接打印它,也不能仅打印布尔值-它必须是产生网格的方法。 问题答案: 编译器无

  • 我得到的错误是“缺少return语句”,代码如下: 有人能帮帮我吗?多谢.

  • 关于或语句中使用的返回语句,我有一个问题。 正如您在下面的方法中所看到的,它期望I

  • 问题内容: 今天,有人陪我一起滥用Java 中的关键字。我编写了一个简单的循环来验证数组中是否存在某些内容。假设是一个length数组,这是我的代码: 现在有人告诉我这不是一个很好的编程,因为我在循环内使用了该语句,这将导致垃圾回收发生故障。因此,更好的代码将是: 问题是我无法正确解释为什么第一个for循环不是一个好习惯。有人可以给我一个解释吗? 问题答案: 现在有人告诉我这不是一个很好的编程,因