こんにちは。ECF Tech ブログ担当 Michiharu.Tです。
Javaプログラミング向け練習問題、今回のテーマは配列です。たくさんのデータを扱うプログラムでは配列は欠かせない要素です。また、配列の扱いはループをいかに使えるかがカギとなってきます。ぜひJavaの学習にお役立てください。 一般的なJavaの学習順序に沿ったテーマの一覧(※随時追加)は、こちらのリンクよりご確認頂けます。
Javaプログラミング
Javaのトピックスです。主に初心者向けにプログラミング学習ネタを提供していきます。
解説動画
2023/01/27 解説動画を掲載しました。
問題編
Q001
問題
- forループを使って、配列arrayの内容を実行結果のとおりに表示してください。
提供コード
public class Quiz001 {
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4, 5 };
//ここにプログラムを書きます。
}
}
実行結果
1 2 3 4 5
import java.util.Scanner;
public class Quiz001 {
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4, 5 };
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
Q002
問題
- forループを使って、配列arrayの各要素の値を2倍にして表示してください。
提供コード
public class Quiz002 {
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4, 5 };
//ここにプログラムを書きます。
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
実行結果
2 4 6 8 10
public class Quiz002 {
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4, 5 };
for (int i = 0; i < array.length; i++) {
array[i] *= 2;
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
Q003
問題
配列aの各値と配列bの各値の合計を、配列cの各要素に代入する プログラムを作成してください。
例えば、
配列aの0番目にある1と配列bの0番目にある6を足した7が
配列cの0番目に入ります。
提供コード
public class Quiz003{
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4, 5 };
int[] b = { 6, 7, 8, 9, 10 };
int[] c = new int[5];
//ここにプログラムを書きます
for (int i = 0; i < c.length; i++) {
System.out.println(c[i]);
}
}
}
実行結果
7 9 11 13 15
public class Quiz003{
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4, 5 };
int[] b = { 6, 7, 8, 9, 10 };
int[] c = new int[5];
for (int i = 0; i < a.length; i++) {
c[i] = a[i] + b[i];
}
for (int i = 0; i < c.length; i++) {
System.out.println(c[i]);
}
}
}
Q004
問題
配列arrayのもつ二次元配列を、二重ループを使って表示してください。
提供コード
public class Quiz004 {
public static void main(String[] args) {
int[][] array = {
{ 1, 8, 12, 17, 20 },
{ 2, 5, 11, 13, 18 },
{ 4, 6, 9, 19, 21 }
};
//ここからプログラムを書きます。
}
}
実行結果
1 8 12 17 20 2 5 11 13 18 4 6 9 19 21
public class Quiz004 {
public static void main(String[] args) {
int[][] array = {
{ 1, 8, 12, 17, 20 },
{ 2, 5, 11, 13, 18 },
{ 4, 6, 9, 19, 21 }
};
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
Q005
問題
配列scoreの内容を実行結果のとおりに表示します。
- 1回目は配列の内容を順番に表示します。
- 2回目は得点の多い順に表示します。配列rankの値を上手く使います。
※配列rankにはscore内で高い得点が入っている要素順に値が並んでいます。
例えば
rankの最初には
1が入っています。これは配列scoreの1番目 に一番高い得点90が入っていることを表しています。
提供コード
public class Quiz005 {
public static void main(String[] args) {
int[] score = { 45, 90, 75, 60, 80 };
int[] rank = { 1, 4, 2, 3, 0 };
System.out.println("----- 出席番号順 -----");
//出席番号順の表示
for (int i = 0; i < score.length; i++) {
//ここにプログラムを書きます
}
System.out.println("----- 得点順 -----");
//得点の高い順に表示
for (int i = 0; i < score.length; i++){
//ここにプログラムを書きます
}
}
}
実行結果
----- 出席番号順 ----- 1番:45点 2番:90点 3番:75点 4番:60点 5番:80点 ----- 得点順 ----- 1位:90点 2位:80点 3位:75点 4位:60点 5位:45点
public class Quiz005 {
public static void main(String[] args) {
int[] score = { 45, 90, 75, 60, 80 };
int[] rank = { 1, 4, 2, 3, 0 };
System.out.println("----- 出席番号順 -----");
//出席番号順の表示
for (int i = 0; i < score.length; i++) {
System.out.println((i + 1) + "番:" + score[i] + "点");
}
System.out.println("----- 得点順 -----");
//得点の高い順に表示
for (int i = 0; i < score.length; i++){
System.out.println((i+1) + "位:" + score[rank[i]] + "点");
}
}
}
おわりに
いかがでしたでしょうか。ループや配列の動きを理解するには、プログラムの流れを丁寧に追いかける作業(トレース)が重要です。必要に応じて値を変えてみたり、`System.out.println`を使って途中途中の値を表示してみたりしながら、動きをつかんでみてください。[PR]
Javaをもっと詳しく学びたい!という方には、下の書籍がおススメです!筆者も愛用しています。
https://amzn.to/4goHQCW


