この記事の目次
このページは「JAVAの繰り返し構文 for」の演習問題です。「JAVAの繰り返し構文 for」の基礎を学びたい方はこちらで参考してください。
JAVAの繰り返し構文 for
この記事ではJAVAの繰り返し構文 for文の使い方を紹介します。初期化、繰り返し条件、更新処理などを宣言して、ブロックを繰り返します。break文、continue文でループを制御する構文も説明します。使いこなすようにしましょう。
1. P = 1.3.5...(2n+1)を計算する
問題:P = 1.3.5...(2n+1)を計算する(n>0)
package helloworld; public class HelloWorld { public static void main(String[] args) { int n = 5; long result = 1; // 式を計算する for (int i = 0; i <= n; i++) { result *= (2 * i + 1); // result = result * (2 * i + 1)と同様 } System.out.println("n = " + n + "において、"); System.out.println("1.3.5...(2n+1) = " + result); } }
実行結果:
2. S = 1 - 2 + 3 - 4 + 5 + ... + ((-1)^(n+1)) * nを計算する
問題:S = 1 - 2 + 3 - 4 + 5 + ... + ((-1)^(n+1)) * nを計算する。 (n >= 0)
条件 : for文を使うこと。ヒント : 変数iを1からnまでに増やし、iは偶数の場合、Sに足し加えますが、奇数の場合はSからiを引く。package helloworld; public class HelloWorld { public static void main(String[] args) { int n = 9, result = 0; // 式を計算する for (int i = 1; i <= n; i++) { if (i % 2 == 0) {//変数iは偶数ならば、引き算をする result -= i; // result = result - i; } else {//変数iは奇数ならば、足し算をする result += i; // result = result + i } } System.out.println("n = " + n + "に対して、"); System.out.println("1 - 2 + 3 - 4 + 5 + ... = " + result); } }
実行結果:
3. S = 1 + 1.2 + 1.2.3 + ... + 1.2.3.nを計算する
問題:S = 1 + 1.2 + 1.2.3 + ... + 1.2.3.nを計算する(n > 0)。
条件 : for文を使うこと。package helloworld; public class HelloWorld { public static void main(String[] args) { int n = 7, sum = 0, count = 1; // 式を計算する for (int i = 1; i <= n; i++) { count *= i; sum += count; } System.out.println("n = " + n + "に対して、"); System.out.println("1 + 1.2 + 1.2.3 + ... = " + sum); } }
実行結果:
4. T = 12 + 22 + 32 + ... + n2を計算する
問題:T = 12 + 22 + 32 + ... + n2を計算する(n > 0)。
条件 : for文を使うこと。package helloworld; public class HelloWorld { public static void main(String[] args) { int n = 7, sum = 0; // 式を計算する for (int i = 1; i <= n; i++) { sum = sum + i * i; } System.out.println("n = " + n + "に対して、"); System.out.println("1^2 + 2^2 + 3^2 +... + n^2 = " + sum); } }
実行結果:
5. Q = 1 + 1/2 + 1/3 + ... + 1/nを計算する。
問題:Q = 1 + 1/2 + 1/3 + ... + 1/nを計算する(n>0)。
条件 : 結果の少数の第2桁まで取ること。package helloworld; import java.text.DecimalFormat; public class HelloWorld { public static void main(String[] args) { int n = 10; float sum = 0; //少数の第2桁まで取るとフォマットする DecimalFormat decimalFormat = new DecimalFormat("#.##"); // 式を計算する for (int i = 1; i <= n; i++) { sum += (float) 1/i; // 1/iの結果をfloat型に変換してからsumに足し加える } System.out.println("n = " + n + "に対して、"); System.out.println("1 + 1/2 + 1/3 + ... + 1/n = " + decimalFormat.format(sum)); } }
実行結果:
6. R = 1 + 22 + 33 + ... + nnを計算する。
問題:R = 1 + 22 + 33 + ... + nnを計算する(n > 0)。
ヒント : Rの計算するループの中に、iiを別のループで計算する。つまり、二重ループになる。package helloworld; public class HelloWorld { public static void main(String[] args) { int n = 7,sum = 0; // R式を計算する for (int i = 1; i <= n; i++) { int temp = 1; // i^iを計算する for (int j = 1; j <= i; j++) { temp *= i; } sum += temp; } System.out.println("n = " + n + "に対して、"); System.out.println("1 + 2^2 + 3^3 + ... + n^n = " + sum); } }
実行結果:
7. M = 1 + (1+2)/2! + (1+2+3)/3! + ... + (1+2+3+...+n)/n!を計算する
問題:M = 1 + (1+2)/2! + (1+2+3)/3! + ... + (1+2+3+...+n)/n!を計算する(n > 0)。
条件 : 結果の少数の第2桁まで取ること。package helloworld; import java.text.DecimalFormat; public class HelloWorld { public static void main(String[] args) { int n = 7; float sum = 0, temp1 = 1, temp2 = 0; //少数の第2桁まで取る DecimalFormat decimalFormat = new DecimalFormat("#.##"); // M式を計算する for (int i = 1; i <= n; i++) { temp1 *= i; // 分母での階乗の計算 temp2 += i; // 分子での和の計算 sum += (float) temp2/temp1;//float型に変換する } System.out.println("n = " + n + "に対して、"); System.out.println("1 + (1+2)/2! + (1+2+3)/3! + ... + (1+2+3+...+n)/n! = " + decimalFormat.format(sum)); } }
実行結果:
8. まとめ
ここまでたどり着いてお疲れ様です。
初心者に対して、これらのfor文の演習問題はやや難しいかと思いますが、for文の意味と使い方はお分かりになりましたか?開発内容によって、難しいことをfor文でやらないといけないことがありますので、for文の制御までを理解するように頑張りましょう。