使用Java

时间:2015-04-30 04:11:40

标签: java methods

我正在调用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); 
        }
    }
}

非常感谢任何帮助。

2 个答案:

答案 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方法的返回类型或从参数中删除该部分。