【问题标题】:"Cannot return a value from method whose result type is void"“无法从结果类型为 void 的方法返回值”
【发布时间】:2014-04-23 10:34:15
【问题描述】:

如何在 for 循环之外使用布尔 hasDivisor?当我尝试编译这部分代码时,我收到消息“无法从结果类型为 void 的方法返回值”

for (int i = 0; i < NumBox.length; i++) 
                {
                 if (NumBox[i] == 0) 
                    continue;
                 boolean hasDivisor = false;
                 for (int j = 0; j < i; j++) {

                    if (NumBox[j] == 0) 
                     continue;
                     if (NumBox[i] % NumBox[j] == 0) {
                       hasDivisor = true;
                       break;
                    }
                 }
                 return hasDivisor;
              }

【问题讨论】:

标签: java arrays compiler-errors return


【解决方案1】:

第一个问题:变量有一个范围,它被限制在声明它们的中。您的变量在 for 循环 within 中声明,但您想在循环之外使用它。将其声明在外部(即之前)循环。

第二个问题:声明你的方法返回boolean——从错误信息来看,当前声明返回void

【讨论】:

    【解决方案2】:

    这是你应该做的:

    boolean hasDivisor = false;
    
    for (int i = 0; i < NumBox.length; i++) 
                {
                 if (NumBox[i] == 0) 
                    continue;
                 hasDivisor = false;
                 for (int j = 0; j < i; j++) {
    
                    if (NumBox[j] == 0) 
                     continue;
                     if (NumBox[i] % NumBox[j] == 0) {
                       hasDivisor = true;
                       break;
                    }
                 }
    

    您在循环内声明了 hasDivisor 变量,这使它的范围仅适用于循环。要访问它,你应该在外面声明它。

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      相关资源
      最近更新 更多