2016-06-27 4 views
0

私は昨日のコーディングについて学び始めたばかりで、今日は完全な数字を見つけるのに役立つプログラムを作りたいと思っていました。これらは機能しません。 Eclipseにはエラーメッセージが表示されないので、間違いは論理的です(?)ここに関連するコードがあります。誰かがエラーの原因を教えてください。これらの完璧な数字の検索プログラムの試行はなぜ機能しませんか?

protected void actionPerformedProcessBtn(ActionEvent arg0) { 
    txtS.setText(""); 
    int limit = Integer.parseInt(txtAmmount.getText()), a = 1, b = 1, c = 0; 
    while (a <= limit) { 
     while(a > b) { 
      if (a % b != 0) { 
       b++; 
      } 
      else { 
       c = c + b; 
       b++; 
      } 
     } 
     if (c == a) 
      txtS.append(a + "\n"); 
     a++; 
    } 
} 

void ActionPerformedDoBtn(ActionEvent arg0) { 
    int c = 1, d, e; 
    txtS.setText(""); 
    while (c <= 1000) { 
     d = 0; 
     e = 0; 
     while(d < c) { 
      if(c % d == 0) 
       e += d; 
      d++; 
     } 
     if (e == c) 
      txtS.append("Perf Num:" + c); 
     c++; 
    } 
} 
+0

ようこそ。あなたはどんな結果を得ますか?あなたはどんな結果を期待していますか? – C8H10N4O2

+6

*私は昨日のコーディングについて学んだばかりです。*今度は、デバッグについて学習する時間です。 – Paul

+1

aの異なる値ごとにbとcを再初期化する必要があります。 – gnasher729

答えて

1

aの値ごとにbとcを再初期化する必要があります。

a = 9で作業していたので、bを8に増やし、9が8で割り切れるかどうかを確認してからbを9に増やして、ループを終了します(a> b)。今度は、aを10に設定します。この時点で、bは前回の反復からすでに9に等しいです。あなたは10が9で割り切れるかどうかをチェックします。

int b = 1、c = 0; while < = limit)ループ内にが含まれています。

関連する問題