2017-12-10 10 views
-1

皆さん、こんにちは、私は与えられた範囲内のすべての完全な数字を表示するJavaプログラムを作成しています。私はこの方法を使用してこれをしなければならない、これは私のコードです:結果が正しくない場合、javaメソッドが何も返さないようにするには

public static void main(String[] args) { 
    for (int i = 1; i <= 1000; i++){ 
     String result = isPerfect(i); 
     System.out.println(result); 
    } 
} 

public static String isPerfect(int num){ 
    String result = ""; 
    int sum = 0; 
    for (int i = 1; i < num; i++){ 
     if ((num % i) == 0){ 
      sum += i; 
     } 
    } 
    if (sum == num){ 
     result = "Number " + num + " is a perfect number"; 
    }else{ 
     result = "Number " + num + " is not a perfect number"; 
    } 
    return result; 
} 

私は6、28および496

ある1〜1000の範囲のための完全数からなるリストを取得することを期待します

実際の結果では、これらの数値が得られますが、メソッドのelse部分からも、「Number#numは完全な数値ではありません」という行が取得されます。私は戻りメソッドを変更しようとしましたが、私はこれに対する解決策を見つけることができませんでした。結果が真でない場合は空の文字列を入れますが、次に完璧な番号6の行を取得し、次の完全な番号が空行になるまでのすべてを取得します。この場合、6と28から22の空行があります。どのように私はこれを変更することができますので、結果が私が望むものでなければ、私のメソッドは何も返しません。

pic of my result

は、だから私はを除いて、そのpicから何かを得るためにないたい

+4

'isPerfect'はその名前のように' boolean'を返します。次にメインの 'if(isPerfect(i)){System.out.println(" Number "+ i +"は完全な数字です。 } ' –

答えて

2

あなたはそこに私は変化するであろう一つのことであり、それはだ、本当に接近している「ナンバー496は完全数です」 Stringではなくbooleanが返されます。このようにしてメソッドisPerfectは、真または偽のいずれかを返します。これは、完全な数値でも論理的でもないので論理的です。

そして、その時点から、あなたは完璧な数字を印刷することができます。

public static void main(String[] args) { 

    for (int i = 1; i <= 1000; i++){ 
     if(isPerfect(i)){ 
      System.out.println("Number "+ i + " is a perfect number"); 
     } 
    } 
} 

public static boolean isPerfect(int num){ 
    int sum = 0; 
    for (int i = 1; i < num; i++){ 
     if ((num % i) == 0){ 
      sum += i; 
     } 
    } 
    if (sum == num){ 
     return true; 
    } 
    return false; 
} 
0

だけのprintlnを削除し、あなたの場合には、このん:"is a perfect number\n" はその後、あなたの他に、空の文字列を置きます。だからこれはあなたがyuorのコードに固執し、何も変えたくないならば。あなたのコードをたくさん変更したいのであれば、@Fubarsメソッドも正しく使用してください。

関連する問題