実現したいこと
1 ~ 10000 のうちで 3 の倍数以外を合計した値を求めてたい。
詳細
以下のソースコードまで書くことができたのですが、以下だと「1~10000までの数字を足し合わせた合計値」が出力されてしまいます。
ここからどうすれば「3の倍数以外」を合計することができるのでしょうか?
該当するソースコード
Java
1 2package chapter8; 3 4public class PracticeMultipleTotal_8_10 { 5 6 public static void main(String[] args) { 7 // 合計値を入れる変数 8 int total = 0; 9 10 // number が 10 以下の間繰り返し 11 for(int number = 1;number <= 10; number++){ 12 // 現在の number の値を表示 13 System.out.println(number + "を足します"); 14 // total に現在の number の値を足す 15 total += number; 16 } 17 // 合計値を出力 18 System.out.println("合計値は" + total + "です"); 19 20 } 21}
解決策として考えたこと
7行目の「number ++」(for文の更新式)の部分を「3の倍数以外を足し合わせる」というプログラムにするために、以下のようなニュアンスのコードを
for文の更新式に入れれば良いのではないかとも思ったのですが、このような考え方で合っているでしょうか。
Java
1if (number % 3 == 0 ) { 2 System.out.println(""); //←なにも表示させたくないので 3} else { 4 System.out.println(number); 5}
補足情報
言語:Java
開発環境:Eclipse
Version : 2022-12 (4.26.0)
その「考えたこと」をまずやってみては(実際に動かせば明白なので、質問作る時間がもったいないと思います)
コメントありがとうございます。
↓こちらを実行してみましたが、「1」の無限ループが発生しました。
int total = 0;
for(int number = 1;number <= 10;){
if (number % 3 == 0 ) {
System.out.println(""); //←なにも表示させたくないので
} else {
System.out.println(number);
}
System.out.println(number);
total += number;
}
System.out.println("合計値:"+total);
}
}
> ↓こちらを実行してみましたが、「1」の無限ループが発生しました。
> for(int number = 1;number <= 10;){
第3パラメータは?
コードは出来るだけ実行可能な状態(短ければ全部)を(質問本文を修正して)載せてください。
思い込みで省略すると実は省略した部分が核心だった場合に解決が遅れます。
コメントありがとうございます。
もともと第3パラメータ(for分の更新式)の部分に「number++」が入力されていたのですが、その状態で実行してしまうと「1~10までの数字を足し合わせた合計値」が出てしまいます。
よって、「number++」を消し、if文を追加することにより、「3の倍数以外の数字」を算出することができるのではないかと思いました。
number++ を消すと、いつまで経っても number は 1 のままですね。
number++ は元に戻して、3 の倍数じゃない場合にだけ足し合わせるようにすれば良いのでは。
回答3件
あなたの回答
tips
プレビュー