Ich muss die Faktoren einer perfekten Zahl drucken. Hier ist der Kern meiner Hauptklasse:
ArrayList<Integer> perfNums = new ArrayList<>();
Scanner in = new Scanner(System.in);
System.out.print("Enter the upperbound: ");
upperbound = in.nextInt();
for (int i = 1; i <= upperbound; i++) {
if (isPerfect(i)) { //boolean to check if number is a perfect number
perfNums.add(i);
}
}
System.out.println("Perfect numbers between 1 and " + upperbound + " are:");
for (int i = 0; i < perfNums.size(); i++) {
System.out.print(perfNums.get(i) + " = ");
printFactor((int)perfNums.get(i));
System.out.println();
}
Hier ist die printFactor- Klasse.
private static void printFactor(int number){
int factor = 1;
while(factor < number){
if (number%factor == 0) System.out.print(factor+ " + ");
//I don't know how to print the + sign otherwise.
factor++;
}
}
Und hier ist eine Beispielausgabe:
Enter the upperbound: 10000
Perfect numbers between 1 and 10000 are:
6 = 1 + 2 + 3 +
28 = 1 + 2 + 4 + 7 + 14 +
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 +
8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064 +
Ich habe das Wesentliche verstanden, aber ich habe mit einem Ausgabeproblem zu kämpfen. Aufgrund der Einschränkungen meines Online-Einreichungssystems muss meine Ausgabe den genauen Spezifikationen entsprechen.
Meine Frage ist, wie ich alle Faktoren meiner perfekten Zahl drucke, aber am Ende das + -Zeichen entferne. (z.B)6 = 1 + 2 + 3
Ich bin mir nicht sicher, wie viele Methoden aus einer while-Schleife gedruckt werden sollen. Wäre eine for-Schleife besser für meine Ziele? Oder gibt es alternative Methoden, um die Faktoren einer Zahl zu drucken?
Die geringste Änderung, um dies zu beheben, könnte etwa so aussehen:
private static void printFactor(int number)
System.out.print(1);
int factor = 2;
while (factor<number) {
if (number%factor == 0) System.out.print(" + " + factor);
factor++;
}
}
1 ist immer ein Faktor, daher können Sie diesen vor der Schleife drucken und dann +
jedem nachfolgenden Faktor voranstellen .
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen