こんにちは、これは私の初めての質問です。私はガイドラインを読んで答えを探しましたが見つからなかったので、私の質問はガイドライン内にあることを願っています。とにかく私は最初のN個の完全な数字を出力しなければならない簡単なJavaの練習に立ち往生しています(数論では、完全な数はその適切な正の約数の和に等しい正の整数です。 (また、その一定量の合計として知られている)の数自体を除く正の約数が。)だから私はやったこのPefect Number 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++;
}
}
それは無限ループで立ち往生し、私はその理由を把握することはできません。とにかく誰かが私を助けることができれば私は本当にそれを感謝し、私の質問に答えるか、それは単なる愚かな質問だと申し訳ありませんが、私が言ったように、私が最初に尋ねることです。ありがとうございました。
はStackOverflowのへようこそ。統合開発環境をお持ちの場合は、特にsoma = soma + iとif(num == soma)のようないくつかの行にブレークポイントを設定することをお勧めします。 (もしあなたがIDEを持っていなければ、System.out.printlnにいくつかの重要な変数を書いてください。) – rajah9
おそらく、 'cont ++'は完璧な数だけインクリメントされるからです。最初の完璧でない数字がループに詰まってしまいます。 whileループ条件は 'while(num
AntonH
これは答えではなく一般的なアドバイスですが、これは明らかに明らかですが、forループが 'soma == num'という数字を生成することはないようです。したがって、 'cont ++'は決して実行されないので、 'cont
SpencerD