2015-04-30 2 views
1

Я вызываю метод недействительногоПризыва к аннулированию метод с параметрами в Java

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

Не могли бы вы опубликовать полное сообщение об ошибке? – Blip

ответ

4

Ваше заявление аннулируется здесь:

public static void printDivisors(int number) 

Если вы используете его внутри функции, вы должны вернуть строку вместо. т.е. писать в строку вместо

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

и использование +, чтобы добавить строку в конце кода:

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

public static String printDivisors (int number) –

+0

Большое вам спасибо за ваш быстрый ответ. Я новичок в java, поэтому я столкнулся с этой проблемой ... Спасибо за разъяснение! –

-1

Проблема заключается в

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

Я полагаю, вы пытаетесь напечатать делитель, но он возвращает нуль, так в идеале, когда компилятор компилирует, он ищет значение, так как у вас есть знак «+» после «Not Prime», но ничего не получает. таким образом, он бросает исключение.

либо изменить тип возврата метода printDivisors, либо удалить эту часть из параметра.

+3

Метод, который * ничего не возвращает *, отличается от метода, который возвращает 'null'. – Makoto

+0

Привет, Саураб! Спасибо за быстрый ответ. Я новичок в Java, поэтому не понимаю, почему это произошло. Для того, чтобы уточнить для себя, метод printDivisors является методом void, я думал, что он ничего не возвращает и просто печатает. –

+0

вы правы, он ничего не возвращает, но когда вы используете его в JOptionPane.showMessageDialog (null, Not Prime "+ printDivisors (inputNum)); копилятор ожидает некоторого возвращаемого значения из метода –

Смежные вопросы