2016-05-21 6 views
1

私はJavaを練習しており、3の倍数または5の倍数のいずれかである1から999までのすべての整数を合計するプログラムに取り組んでいます。ここでどのようにしてブール型を相対的な整数として表現できますか?

は、私がこれまでに書かれたものです:

public class MultiplesOfThreeAndFive { 

    public static void main(String[] args) { 
     //For a number to be a multiple, i % number equals 0. 
     MultiplesOfThreeAndFive m = new MultiplesOfThreeAndFive(); 
     for (int i = 1; i < 1000; i++){ 
      System.out.println(m.checkIfMult(i)); 
     } 
    } 

    public boolean checkIfMult(int i){ 
     return (i % 3 == 0 || i % 5 == 0); 
    } 
} 

を今、私はこれをコンパイルするとき、私が得るすべては1から999までの真であり、各番号の偽の私は、これが原因で、私の方法であることを理解します私のcheckIfMultメソッドの戻り値の型はbooleanです。

私は本当と偽をまとめることができないので、リスト内で真と表示されている数字を取得するだけです。

EDIT:トムは言った...私は私のメインメソッドにこれを追加

で行く:

私のコンパクトなソリューションについて
public static void main(String[] args) { 
    //For a number to be a multiple, i % number equals 0. 
    MultiplesOfThreeAndFive m = new MultiplesOfThreeAndFive(); 
    for (int i = 1; i < 1000; i++){ 
     System.out.println(m.checkIfMult(i)); 
     if (m.checkIfMult(i) == true){  
     } 
    } 
} 
+0

'sum'変数と' if(checkIfMult) 'チェックを使うのはどうですか?これは魔法ではありません。 – Tom

+0

@Tom私は、真と偽をまとめることができない場合、これがどのように機能するのか分かりません。 –

+0

あなたは 'true'または' false'を合計するつもりはない、あなたのメソッドが 'true'を返す場合は' i'を合計します。 – Tom

答えて

1

あなたはこのように実行されている合計を維持することができます:

public class MultiplesOfThreeAndFive { 

    public static void main(String[] args) { 
     //For a number to be a multiple, i % number equals 0. 
     MultiplesOfThreeAndFive m = new MultiplesOfThreeAndFive(); 

     int sum = 0; 
     for (int i = 1; i < 1000; i++){ 
      if (m.checkIfMult(i)) 
      { 
       sum = sum + i; 
      } 
     } 
     System.out.println("Sum is: " + sum); 
    } 

    public boolean checkIfMult(int i){ 
     return (i % 3 == 0 || i % 5 == 0); 
    } 
} 

サイドノート:この例ではcheckIfMultメソッドを静的にすることができます。その場合は、MultiplesOfThreeAndFiveクラスのインスタンスを作成する必要はありません。

+0

素晴らしい作品です!ありがとうございました! –

+0

@PhilipDrachようこそ。 –

2

何?あなたのアイデアのために

IntStream.range(0, 1000).filter(i -> i % 3== 0 || i % 5 == 0).sum(); 

sum変数を作成し、for文で次のコードを追加します。

if (m.checkIfMult(i)) sum += i; 
+1

ありがとう、私はこれを試してみます。 –

+1

間違いなくコンパクト! – nicomp

+0

はい、私は999で<1000であるため停止したいと考えています。 –

関連する問題