使用 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));}