2017-11-18 15 views
0

私はJavaでArmstrongプログラムを持っています。したがって、プログラムは、誰かから与えられた間隔の間に数字があるかどうかをチェックしなければなりません(例:より低い数字を100にしてください、より高いクラスを与えてください:1700;そしてプログラムはArmstrong )この問題は、Armstrongの数値が1000であるがそれ以上でないかどうかをチェックするという問題です。私は(r*r*r*r)に変更するのであれば、それだけで1000人以上とない1000 の下アームストロングの番号を示しsum = sum + (r*r*r); 任意のアイデアをwhat'sそれと間違って、どのようにそれを変更するには:Armstrongプログラムは1000まで実行されますが、それ以上は実行されません。もっと上がるために何をすべきか?

1行がある場合、私は好奇心旺盛です?ここで

はコードです:

static boolean isArmstrong(int number) { 
    boolean isArmNumber = false; 
    int sum = 0; 
    int tempNum = number; 
    while (tempNum > 0) { 
     int r = tempNum % 10; 
     sum = sum + (r*r*r); 
     tempNum = tempNum/10;   
    } 
    if (sum == number) { 
     isArmNumber = true; 
    } 
    return isArmNumber;  
} 
+0

は私たちのコードを表示します!!。 –

+0

あなたは前に上がるのを止めますか?エラー? StackOverflowをスローしている再帰関数を使用していますか? – Carcigenicate

+0

あなたが間違っていた可能性がある場所を確認するためのコードを提供していない場合、世界中のどのような人が答えられると思われますか? – DevilsHnd

答えて

1

あなたはsum = sum + (r*r*r);を使用しているので、あなたのコードは153、370、371および407として有効なアームストロング番号を検索します。 高い数値をチェックする場合は、入力番号の長さに応じて計算を(r*r*r*r)などに変更する必要があります。

sum = sum + (r*r*r);を交換してください:我々は間違っているものを見ることができるように

int tmp = 1; 
for (int i = 0; i < String.valueOf(number).length(); i++) { 
     tmp = tmp * r; 
} 
sum = sum + tmp; 
+0

しかしそれは問題です。私はある間隔のすべての人が必要です。例えば:私は100から1700までのnubmbersを持っており、progrogrammは100から1700までのすべてのアームストロング数を超過するはずですが、どこに行くかは、1000(r * r * r)またはすべてのアームストロング数1000より大きい(r * r * r * r)。そして、私はそれらをすべて噛み合わせて、分離しないようにします。 –

+0

コードスニペットをテストしましたか? ^^ – sinclair

+0

それから何もしません。私は低い数字と高い数字でしか出ることができず、プログラマーは何も出力しません。それはちょうどblanck then –

関連する問題