2017-12-10 1 views
-1

Hallo alle zusammen nicht richtig ist, ich bin ein Java-Programm zu machen, die alle perfekt Zahlen in einem bestimmten Bereich angezeigt werden. Ich habe diese Methode unter Verwendung zu tun und das ist mein Code:Wie Java-Methode nicht zurück, etwas zu machen, wenn das Ergebnis

public static void main(String[] args) { 
    for (int i = 1; i <= 1000; i++){ 
     String result = isPerfect(i); 
     System.out.println(result); 
    } 
} 

public static String isPerfect(int num){ 
    String result = ""; 
    int sum = 0; 
    for (int i = 1; i < num; i++){ 
     if ((num % i) == 0){ 
      sum += i; 
     } 
    } 
    if (sum == num){ 
     result = "Number " + num + " is a perfect number"; 
    }else{ 
     result = "Number " + num + " is not a perfect number"; 
    } 
    return result; 
} 

Ich erwarte nur von vollkommenen Zahlen aus einer Liste zu erhalten, die für Bereich von 1 bis 1000 sind 6, 28 und 496.

Für das eigentliche Ergebnis, das ich diese Zahlen bekommen, aber ich auch die Linie von anderem Teil in dem Verfahren erhalten, das heißt „Nummer #num ist keine perfekte Zahl“. Ich habe versucht, die Rückkehrmethode zu ändern, aber ich konnte keine Lösung dafür finden. Ich habe eine leere Zeichenfolge, wenn das Ergebnis nicht stimmt, aber dann habe ich meine Linie für perfekte Nummer 6 und dann alles erhalten, bis die nächste perfekte Zahl leere Zeile ist, in diesem Fall von 6 und 28 gibt es 22 Leerzeilen. Wie kann ich das ändern, sodass meine Methode nichts zurückgibt, wenn das Ergebnis nicht das gewünschte ist?

pic of my result

So würde Ich mag nichts von diesem Bild zu bekommen, außer für „Nummer 496 ist eine perfekte Zahl“

+4

nur machen 'richtig ist isPerfect' ein' boolean' zurückkehren, wie der Name schon vermuten lässt. Dann in main put 'if (isPerfect (i)) {System.out.println (" Nummer "+ i +" ist eine perfekte Zahl "); } ' –

Antwort

2

Sie sind ganz in der Nähe, es ist eine Sache, die ich ändern würde, und das ist, Zurückgeben einer boolean anstatt einer String. Auf diese Weise das Verfahren isPerfect wird entweder wahr oder falsch zurückgeben, was irgendwie logisch ist, da es entweder eine vollkommene Zahl oder seine nicht.

Und dann von diesem Punkt Sie die perfekten Zahlen drucken:

public static void main(String[] args) { 

    for (int i = 1; i <= 1000; i++){ 
     if(isPerfect(i)){ 
      System.out.println("Number "+ i + " is a perfect number"); 
     } 
    } 
} 

public static boolean isPerfect(int num){ 
    int sum = 0; 
    for (int i = 1; i < num; i++){ 
     if ((num % i) == 0){ 
      sum += i; 
     } 
    } 
    if (sum == num){ 
     return true; 
    } 
    return false; 
} 
0

Entfernen Sie einfach println, und in Ihrer wenn dies tut: "is a perfect number\n" Dann in Ihrem sonst leere Zeichenfolge setzen. Also, wenn Sie an Ihrem Code festhalten wollen und nichts ändern wollen. Wenn Sie Ihren Code viel Gebrauch @Fubars Methode ändern möchten, die auch

Verwandte Themen