"Cannot return a value from method whose result type is void"



如何在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;
              }

第一个问题:变量具有作用域,该作用域仅限于声明它们的。变量在for循环的内声明为,但是您希望在循环之外使用它。在之外(即在循环之前)声明

第二个问题:声明你的方法返回boolean -从错误信息判断,它目前声明返回void

你应该这样做:

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变量,这使得它的作用域只适用于循环。要访问它,应该在外部声明它。

相关内容

最新更新