Hallo das ist das erste Mal, dass ich hier eine Frage stelle, ich lese die Richtlinien und ich habe nach einer Antwort gesucht und keine gefunden, also hoffe ich, dass meine Frage innerhalb der Richtlinien liegt. Jedenfalls stecke ich auf einer einfachen Java-Übung fest, wo ich die ersten N perfekten Zahlen ausgeben muss (In der Zahlentheorie ist eine perfekte Zahl eine positive ganze Zahl, die gleich der Summe ihrer richtigen positiven Teiler ist, dh die Summe ihrer positive Teilern die Zahl selbst (auch als aliquote Summe bekannt) ausgeschlossen ist.) Also habe ich diesePefect Nummer Java
import java.util.Scanner;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int cont = 0;
int num = 1;
int soma = 0;
System.out.println("Quantos números perfeitos?");
int n = in.nextInt();
while (cont < n) {
for (int i = 1; i <= num/2; i++) {
if (num % i == 0) {
soma = soma + i;
}
}
if (num == soma) {
System.out.println(num + " é perfeito.");
cont++;
}
num++;
}
}
Es in einer Endlosschleife hängen bleibt, und ich kann nicht herausfinden, warum. Wie auch immer, wenn jemand mir helfen kann, würde ich es wirklich schätzen und wenn meine Frage beantwortet wurde oder wenn es nur eine blöde Frage ist, tut mir leid, wie ich schon sagte, es ist meine erste Frage. Vielen Dank.
Willkommen bei Stackoverflow. Wenn Sie eine integrierte Entwicklungsumgebung haben, würde ich vorschlagen, dass Sie Haltepunkte bei mehreren Zeilen setzen, insbesondere Soma = Soma + I und If (Num == Soma). (Wenn Sie keine IDE haben, bitte System.out.println einige wichtige Variablen.) – rajah9
Wahrscheinlich weil 'cont ++' nur inkrementiert wird, wenn es eine perfekte Zahl ist. Die erste nicht perfekte Zahl wird in der Schleife stecken bleiben. Ich denke, die while-Schleife sollte 'while (num
AntonH
Nur allgemeine Ratschläge, anstatt einer Antwort, und dies könnte Ihnen offensichtlich offensichtlich sein, aber es ist wahrscheinlich ein Problem, dass die for-Schleife niemals eine Zahl erzeugt, in der 'soma == num' steht. Als solches wird "cont ++" niemals ausgeführt, und daher ist "cont
SpencerD