質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

8716閲覧

Javaのwhile文、do while文を使って計算する方法

lu_na07

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/02/17 13:12

プログラム初歩で勉強中のものです。
色々なサイトで調べてもなかったので初歩的な問題ですが、質問させていただきます。
for文の繰り返しは分かるのですが、while文、do while文になると正しい値が出なくて手こずってしまいます。

1.while文で1から10までの値を加算するプログラム
2.while文、do while文で2の5乗を求めるプログラム
(do whileは分からず、手つかずになってしまっています。)

=============================
public class sample {

public static void main(String[] args) { //1から10までの値を加算するプログラム

int i,aa;

i = 1;
aa= 0;

do{
aa = aa + i;

i ++;
}while(i<=10 );
System.out.println(i);
}
}

=============================
public class sample2 {

public static void main(String[] args) { // 2の5乗を求める

int i;
i=0;

while(i<5){
i = i*2;

}
System.out.println("2の5乗は"+i+"です。");
i++;
}

}

=============================
どなたかご存知の方教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

  1. while文で1から10までの値を加算するプログラム
  2. while文、do while文で2の5乗を求めるプログラム
  3. Stream を使って 1から10までの値を加算するプログラム
  4. Stream を使って 2の5乗を求めるプログラム

の例を示します。

java

1import java.util.stream.IntStream; 2 3public class MyClass { 4 public static void main(String[] args) { 5 6 // 1. while文で1から10までの値を加算するプログラム 7 int sum = 0; 8 int i = 0; 9 while (i <= 10) { 10 sum += i; 11 i++; 12 } 13 System.out.println("sum = " + sum); 14 15 // 2. while文、do while文で2の5乗を求めるプログラム 16 int ans = 1; 17 i = 0; 18 while (i < 5) { 19 ans *= 2; 20 i++; 21 } 22 System.out.println("2 ** 5 = " + ans); 23 24 ans = 1; 25 i = 0; 26 do { 27 ans *= 2; 28 i++; 29 } while (i < 5); 30 System.out.println("2 ** 5 = " + ans); 31 32 // 3. Stream を使って 1から10までの値を加算するプログラム 33 sum = IntStream.range(1, 11).sum(); 34 System.out.println("sum = " + sum); 35 36 // 4. Stream を使って 2の5乗を求めるプログラム 37 int[] result = {1}; 38 IntStream.range(1, 6).forEach(val -> result[0] *= 2); 39 System.out.println("2 ** 5 = " + result[0]) 40 } 41}

実行結果

sum = 55 2 ** 5 = 32 2 ** 5 = 32 sum = 55 2 ** 5 = 32

投稿2016/02/17 14:07

編集2016/02/17 14:18
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

とりあえず、while版

java

1// 1から10まで足す while 2int counter = 1; 3int answer = 0; 4while(counter <= 10) { 5 answer += counter++; 6} 7System.out.println(answer); 8 9// 2の5乗を求める while 10counter = 1; 11answer = 1; 12while(counter <= 5) { 13 answer *= 2; 14 counter++; 15} 16System.out.println(answer);

投稿2016/02/17 13:51

root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

繰り返し処理を記述するときは下記のことを考える必要があります。
・開始状態
・状態の更新
・1ループの処理
・繰り返し条件
それを踏まえてfor文の形式を思い出してください。

Java

1for( 2 int i =0 ;//開始状態 3 i < 10 ;//繰り返し条件 4 i++//状態の更新 5){ 6//ループ処理 7}

これを同じようにwhile,do-whileに当てはめると下記のようになります。

Java

1int i = 0;//開始状態 2while(i < 5){//繰り返し条件 3 i++;//状態の更新 4}

Java

1int i = 0;//開始状態 2do{ 3 i++;//状態の更新 4}while(i < 5);//繰り返し条件

今回はiをインクリメントして繰り返し条件を満たさなくなったら繰り返しを終了します。

質問者のコードは状態の更新がループの外に出ているため、繰り返しが終わらない無限ループに陥っています。

投稿2016/02/17 13:36

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

sampleのコードだけ拝見しました。
出力結果は「11」でよかったでしょうか?

System.out.println(i);
の行で i を出力しようとしているので、期待している出力と違う結果になっているのではないでしょうか?

投稿2016/02/17 13:23

kurokoSin

総合スコア133

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問