使用 Java 中的参数调用 void 方法
Call to void method with parameters in Java
我正在调用 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);
}
}
}
如有任何帮助,我们将不胜感激。
问题出在
JOptionPane.showMessageDialog(null, "Not Prime" + printDivisors(inputNum));
我想你正在尝试打印除数,但它 return 理想情况下是空的,当编译器编译时,它会搜索一个值,因为你在 [=17= 之后有“+”号],但没有得到任何东西。因此它抛出异常。
要么更改 printDivisors 方法的 return 类型,要么从参数中删除该部分。
您的声明在这里无效:
public static void printDivisors(int number)
如果您在函数内部使用它,您应该 return 一个字符串。
即写入字符串而不是
System.out.print("\t" + i);
并使用 + 在代码末尾附加字符串:
JOptionPane.showMessageDialog(null, "Not Prime" + printDivisors(inputNum));}
我正在调用 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);
}
}
}
如有任何帮助,我们将不胜感激。
问题出在
JOptionPane.showMessageDialog(null, "Not Prime" + printDivisors(inputNum));
我想你正在尝试打印除数,但它 return 理想情况下是空的,当编译器编译时,它会搜索一个值,因为你在 [=17= 之后有“+”号],但没有得到任何东西。因此它抛出异常。
要么更改 printDivisors 方法的 return 类型,要么从参数中删除该部分。
您的声明在这里无效:
public static void printDivisors(int number)
如果您在函数内部使用它,您应该 return 一个字符串。 即写入字符串而不是
System.out.print("\t" + i);
并使用 + 在代码末尾附加字符串:
JOptionPane.showMessageDialog(null, "Not Prime" + printDivisors(inputNum));}