我正在调用void方法
printDivisors(inputNum)
并收到此错误:
'void' type not allowed here
我在字符串中连接对方法的调用,编译器一直抱怨......
以下是对代码中方法的调用:
if (determinePrime(inputNum)) {
JOptionPane.showMessageDialog(null, "Prime");
} else {
JOptionPane.showMessageDialog(null, "Not Prime" + printDivisors(inputNum));
}
您可以在下面看到完整的程序:
import javax.swing.JOptionPane;
public class method_01 {
public static void main (String [] args) {
String input;
int inputNum;
// Determine Prime
do {
input = JOptionPane.showInputDialog("Enter a positive number please");
inputNum = Integer.parseInt(input);
} while (inputNum < 1 );
if (determinePrime(inputNum)) {
JOptionPane.showMessageDialog(null, "Prime");
} else {
JOptionPane.showMessageDialog(null, "Not Prime" + printDivisors(inputNum));
}
}
// Determine Prime Method
public static boolean determinePrime(int num) {
for (int i = 2; i < num ; i++) {
if (num % i == 0)
return false;
}
return true;
}
// Print all the divisors of a number
public static void printDivisors(int number) {
for (int i = 1; i <= number; i++ ) {
if (number % i == 0)
System.out.print("\t" + i);
}
}
}
非常感谢任何帮助。
答案 0 :(得分:4)
您的声明在此处无效:
public static void printDivisors(int number)
如果您在函数中使用它,则应该返回一个字符串。 即写入字符串而不是
System.out.print("\t" + i);
并使用+将字符串附加到代码的末尾:
JOptionPane.showMessageDialog(null, "Not Prime" + printDivisors(inputNum));}
答案 1 :(得分:-1)
问题在于
JOptionPane.showMessageDialog(null, "Not Prime" + printDivisors(inputNum));
我想你正在尝试打印除数,但它返回null,理想情况下,当编译器编译时,它会搜索一个值,就像你有&#34; +&#34;在&#34; Not Prime&#34;之后签名,但没有得到任何东西。因此它抛出一个例外。
更改printDivisors方法的返回类型或从参数中删除该部分。