有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中使用参数调用void方法

我调用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) 个答案

  1. # 1 楼答案

    您的声明在此无效:

    public static void printDivisors(int number)
    

    如果在函数中使用它,则应该返回一个字符串。 i、 e.写入字符串而不是

    System.out.print("\t" + i);
    

    并使用+将字符串附加到代码末尾:

    JOptionPane.showMessageDialog(null, "Not Prime" + printDivisors(inputNum));}
    
  2. # 2 楼答案

    问题在于

    JOptionPane.showMessageDialog(null, "Not Prime" + printDivisors(inputNum));
    

    我假设您试图打印除数,但它返回null,因此理想情况下,当编译器编译时,它会搜索一个值,因为“Not Prime”后面有“+”符号,但不会得到任何结果。因此,它抛出了一个例外

    更改printDivisors方法的返回类型或从参数中删除该部分