基本構文に関する問題1
問題1-1
VariablePracticeクラスのmainメソッドをコメントの指示通りに、プログラムを記述してみましょう。
下記、【実行結果】と同じ内容が出力されるようにしてください。
【実行結果】
みかんの価格:130円 みかんの個数:6個 みかんの総価格:780円
【VariablePractice.java】
public class VariablePractice { public static void main(String[] args) { // みかんの価格を表現するint型の変数を宣言してください。 // (変数名はおまかせします) // みかんの価格変数に130を代入してください。 // みかんの個数を表現するint型の変数を宣言し、 // 初期値として6を代入してください。(変数名はおまかせします) // みかんの総価格を表現するint型の変数を宣言し、 // 初期値に「みかん価格変数の値×みかん個数変数の値」の演算結果 // を代入してください。(変数名はおまかせします) // みかん価格変数の値を出力してください。 // みかん個数変数の値を出力してください。 // みかん総価格変数の値を出力してください。 } }
問題1-2
コメントで指示された値を出力するようにSystem.out.println()の丸括弧の中に、演算を書いてみましょう。
下記、【実行結果】と同じ内容が出力されるようにしてください。
(例)
// 1 足す 2 引く 3 は?
System.out.println(1 + 2 - 3);
【実行結果】
144 7 6 0.6 a
【CalculatePractice.java】
public class CalculatePractice { public static void main(String[] args) { // 5 と 6 と 7 を足した合計に 8 を掛けた値は? System.out.println( ); // 7 と 8 を足した値を 5 で割った値に、 // 6 から 4 を引いた値に 2 を掛けた値を足した値は? System.out.println( ); // 1000 を 7 で割ったあまりは? System.out.println( ); // 6 を 5 で割った値を、さらに 2 で割った正確な値は? System.out.println( ); // アルファベットの大文字 'A' に 32 を足した文字は? System.out.println( ); } }
問題1-3
コメントに従ってプログラムを記述してみましょう。
下記、【実行結果】と同じ内容が出力されるようにしてください。
【実行結果】
65 65 A 130
【PrimitiveCastPractice.java】
public class PrimitiveCastPractice { public static void main(String[] args) { // short型の変数 s1 を宣言し、65 を代入してください。 // s1 の値を出力してください。 // byte型の変数 b を宣言し、変数 s1 の値を代入してください。 // b の値を出力してください。 // char型の変数 c を宣言し、変数 b の値を代入してください。 // c の値を出力してください。 // short型の変数 s2 を宣言し、変数 s1 と b を足した値を代入してください。 // s2 の値を出力してください。 } }
問題1-4
int型の変数valueが宣言してあります。変数valueは任意の整数をあらわしています。
まずは変数valueの値が偶数か奇数かを判定します。偶数の場合は「偶数です」と表示し、奇数の場合は「奇数です」と表示します。
負の数値でもきちんと偶数・奇数を判定してください。
次に、変数valueの値が3の倍数、4の倍数、5の倍数であるかの判定を行います。
3の倍数の場合は「3の倍数です」と表示します。
4の倍数の場合は「4の倍数です」と表示します。
5の倍数の場合は「5の倍数です」と表示します。
3の倍数かつ4の倍数の数値もあることに注意してください。
今回の練習問題はif文だけを使用し、繰り返し構文は使わないでください。
【実行結果】
value:16 偶数です 4の倍数です
value:-15 奇数です 3の倍数です 5の倍数です
value:60 偶数です 3の倍数です 4の倍数です 5の倍数です
【IfBasicPractice.java】
public class IfBasicPractice { public static void main(String[] args) { // 整数変数の宣言と初期化 int value = 16; // ←値を変更しながら実行 System.out.println("value:" + value); // if文の開始 } }
問題1-5
int型の変数ageが宣言してあります。変数ageは年齢を表しています。
変数ageの値が20以上の場合は「成人です」と表示します。
また、変数ageの値が20未満かつ0以上の場合は「未成年です」と表示します。
それ以外の場合は「エラー」と表示します。
さらに、未成年の場合に限り次のような表示も行います。変数ageの値が6未満または14より大きい場合は「今は義務教育を受けていません」と表示し、それ以外の場合は「今は義務教育を受けています」と表示します。
【実行結果】
年齢:25 成人です
年齢:18 未成年です 今は義務教育を受けていません
年齢:12 未成年です 今は義務教育を受けています
年齢:-2 エラー
【IfNormalPractice.java】
public class IfNormalPractice { public static void main(String[] args) { // 年齢変数の宣言と初期化 int age = 25; // ←値を変更しながら実行 System.out.println("年齢:" + age); // if文の開始 } }
問題1-6
double型の2つの変数(身長height と 体重weight)が宣言してあります。
次の手順にしたがって、肥満度(BMI)測定を行ってください。
- double型の変数bmiを宣言します。
- 変数bmiにBMI値を格納します。BMI値の算出方法は以下の通りです。
BMI = (体重kg) ÷ (身長m の二乗) - 変数bmiの値を次の形式で出力します。
「あなたのBMI値は○○です」 - 最後に、変数bmiの値に応じて次のようなメッセージを出力します。
26.5以上 ・・・ 「肥満です」
25.5未満24以上 ・・・ 「太り気味です」
24未満20以上 ・・・ 「普通です」
20未満0以上 ・・・ 「スリムです」
それ以外 ・・・ 「エラーです」
【実行結果】
身長:170.0(cm) 体重:88.0(kg) あなたのBMI値は30.449826989619382です 肥満です
身長:170.0(cm) 体重:55.0(kg) あなたのBMI値は19.031141868512112です スリムです
【IfCalculatePractice.java】
public class IfCalculatePractice { public static void main(String[] args) { double height = 170.0; // ←値を変更しながら実行 double weight = 88.0; // ←値を変更しながら実行 System.out.println("身長:" + height + "(cm)"); System.out.println("体重:" + weight + "(kg)"); // BMI値の算出と表示 } }
問題1-7
int型の変数monthが宣言してあります。変数monthは月を表しています。
変数monthの値が1、3、5、7、8、10、12の場合は「○月は31日まであります」と表示し、4、6、9、11の場合は「○月は30日まであります」と表示します。
2の場合は「2月は28、または、29日まであります」と表示します。
また、変数monthの値が1〜12以外の値の場合は「エラー」と表示してください。
条件分岐には必ずswitch文を使用してください。
【実行結果】
1月 1月は31日まであります
2月 2月は28、または29日まであります
4月 4月は30日まであります
13月 エラー
【SwitchBasicPractice.java】
public class SwitchBasicPractice { public static void main(String[] args) { int month = 1; // ←値を変更しながら実行 System.out.println(month + "月"); // switch文の開始 } }
問題1-8
21から29までの数値を調査します。
その数値が3から9までの倍数である場合は「○は△の倍数です」と出力します。
【実行結果】
21は3の倍数です 21は7の倍数です 24は3の倍数です 24は4の倍数です 24は6の倍数です 24は8の倍数です 25は5の倍数です 27は3の倍数です 27は9の倍数です 28は4の倍数です 28は7の倍数です
【ForBasicPractice.java】
public class ForBasicPractice { public static void main(String[] args) { // for文の開始 } }
問題1-9
for文を利用して、10から100までの自然数の中から素数であるものを表示してください。
素数とは、1とその数以外のどんな自然数によっても割り切れない1より大きな自然数のことです。
【実行結果】
11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
【ForNormalPractice.java】
public class ForNormalPractice { public static void main(String[] args) { // for文の開始 } }
問題1-10
変数levelは山の段数を表しています。
for文をネストして、次の図形を作成してください。
なお、山の左側には全角スペースを使用してください。
(実行結果は見やすさのため白い四角で表します)
【実行結果】
□ □ □ □ ■ □ □ □ ■ ■ ■ □ □ ■ ■ ■ ■ ■ □ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
【ForHiLevelPractice.java】
public class ForHiLevelPractice { public static void main(String[] args) { // 山の段数を表す変数 int level = 5; // for文の開始 } }
問題1-11
int型変数xが1で初期化されています。
xの値をwhile文を用いて2倍していき、その都度値を出力します。
xの値が1000を超えた段階でループを終了してください。
【実行結果】
1 2 4 8 16 32 64 128 256 512
【WhileBasicPractice.java】
public class WhileBasicPractice { public static void main(String[] args) { int x = 1; // while文の開始 } }
問題1-12
mainメソッドはすでに完成しています。(変更は禁止です)
mainメソッド内で呼び出している、第一引数の文字列を第二引数の回数分表示するdisplayメソッドを定義してください。
【実行結果】
テスト テスト テスト テスト テスト
【MethodBasicPractice.java】
public class MethodBasicPractice { public static void main(String[] args) { // displayメソッドの呼び出し display("テスト", 5); } // ここにdisplayメソッドを定義してください }
問題1-13
mainメソッドはすでに完成しています。(変更は禁止です)
mainメソッド内で呼び出している、第一引数と第二引数の値を、第三引数の種類によって計算するcalcメソッドを定義してください。
ただし、3つの引数の型はすべてint型とし、第三引数の値が0のときは足し算、1のときは引き算、2のときは掛け算、3のときは割り算とします。
第三引数の値が0〜3以外の場合は、第一・第二引数の値にかかわらず0を返してください。
また、条件分岐には必ずswitch文を使用してください。
注意
今回は0による除算の対応は不要とします。
【実行結果】
足し算:24 引き算:12 掛け算:108 割り算:3
【MethodBasicPractice2.java】
public class MethodBasicPractice2 { public static void main(String[] args) { int a = 18; int b = 6; // calcメソッドの呼び出し System.out.println("足し算:" + calc(a, b, 0)); System.out.println("引き算:" + calc(a, b, 1)); System.out.println("掛け算:" + calc(a, b, 2)); System.out.println("割り算:" + calc(a, b, 3)); } // ここにcalcメソッドを定義してください }
問題1-14
mainメソッドはすでに完成しています。(変更は禁止です)
mainメソッド内で呼び出している、int型の3つの引数の中で、一番小さいものの値を戻り値として返すminメソッドを作成してください。
【実行結果】
整数88、79、96の中で最小の値は79です
【MethodBasicPractice3.java】
public class MethodBasicPractice3 { public static void main(String[] args) { int x = 88; int y = 79; int z = 96; // minメソッドの呼び出し System.out.println("整数" + x + "、" + y + "、" + z + "の中で最小の値は"); System.out.println(min(x, y, z) + "です"); } // ここにminメソッドを定義してください }
問題1-15
次の指示に従ってArrayBasicPracticeクラスのmainメソッドを完成させてください。
- int配列型変数arrを宣言してください。
- 要素数が3つのint配列型オブジェクトを生成してください。
- 各要素にそれぞれ25、39、43を代入してください。
- forループを使用して、各要素を出力してください。
(出力形式は実行結果を参照)
【実行結果】
1番目の値は25です 2番目の値は39です 3番目の値は43です
【ArrayBasicPractice.java】
public class ArrayBasicPractice { public static void main(String[] args) { // 1. int配列型変数の宣言 // 2. 配列オブジェクトの生成 // 3. 各要素の値を代入 // 4. 各要素の値を表示 } }
問題1-16
mainメソッドはすでに完成しています。(変更は禁止です)
mainメソッド内で呼び出している、引数で渡ってくるint配列オブジェクトの各要素の値を合計して、戻り値として返すsumメソッドを定義してください。
【実行結果】
配列の合計値:28
【ArrayMethodPractice.java】
public class ArrayMethodPractice { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7}; // sumメソッドの呼び出し System.out.println("配列の合計値:" + sum(arr)); } // ここにsumメソッドを定義してください }
問題1-17
mainメソッドはすでに完成しています。(変更は禁止です)
mainメソッド内で呼び出している、引数で渡ってくるint配列オブジェクトの各要素の中から最大のものを選んで戻り値として返すmaxメソッドを定義してください。
(ただし、すべての値は正の数とします)
【実行結果】
配列の最大値:1010
【ArrayMethodPractice2.java】
public class ArrayMethodPractice2 { public static void main(String[] args) { int[] arr = {43, 2, 765, 234, 908, 115, 32, 476, 938, 65, 93, 47, 102, 735, 529, 1010, 639, 660, 182, 908}; // maxメソッドの呼び出し System.out.println("配列の最大値:" + max(arr)); } // ここにmaxメソッドを定義してください }
問題1-18
mainメソッドはすでに完成しています。(変更は禁止です)
mainメソッド内で呼び出している、2つのint配列オブジェクトを引数に取り、共通する数値の個数を調べて戻り値として返すcommonメソッドを定義してください。
(今回のサンプルでは10、17、38、55の4つの数値が2つの配列に共通しています。)
【実行結果】
共通する数値の個数:4
【ArrayMethodPractice3.java】
public class ArrayMethodPractice3 { public static void main(String[] args) { int[] arr = {13, 90, 10, 79, 101, 25, 123, 38, 5, 16, 64, 55, 17}; int[] arr2 = {38, 118, 26, 17, 41, 53, 10, 88, 92, 102, 67, 22, 55}; // commonメソッドの呼び出し System.out.println("共通する数値の個数:" + common(arr, arr2)); } // ここにcommonメソッドを定義してください。 }
問題1-19
int二次元配列型の変数arrが宣言されています。
すべての要素を順番に表示するプログラムを、for文を使って記述してください。
次に、すべての要素を逆順に表示するプログラムを、for文を使って記述してください。
【実行結果】
112233445566778899 998877665544332211
【DoubleArrayBasicPractice.java】
public class DoubleArrayBasicPractice { public static void main(String[] args) { // int2次元配列型変数arrの宣言と初期化 int[][] arr = {{11, 22, 33}, {44}, {55, 66}, {77, 88, 99}}; // 配列のすべての要素を順に表示してください System.out.println(); // 配列のすべての要素を逆から表示してください } }
問題1-20
mainメソッドはすでに完成しています。(変更は禁止です)
mainメソッド内で呼び出している、第一引数のint二次元配列型の値の中から、第二引数のint型の値がいくつ存在するかをカウントするcountメソッドを定義してください。
【実行結果】
1の個数:4 7の個数:3
【DoubleArrayMethodPractice.java】
public class DoubleArrayMethodPractice { public static void main(String[] args) { // int二次元配列変数の宣言と初期化 int[][] arr = {{1, 5, 8}, {2, 4, 7}, {1, 9, 3, 5}, {4, 2}, {6, 1, 9, 4}, {7, 3, 8, 1}, {8, 4, 3, 9, 7}}; // 検索する数値変数の宣言と初期化 int target = 1; // countメソッドの呼び出し System.out.println(target + "の個数:" + count(arr, target)); // 検索する数値の変更 target = 7; // countメソッドの呼び出し System.out.println(target + "の個数:" + count(arr, target)); } // ここにcountメソッドを定義してください }
問題1-21
100人分のテストの点数を格納しているint配列型の変数pointsがあります。
この試験の平均点の算出と、ヒストグラムを作成してください。
ヒストグラムは、階級ごとに個数を集計し、グラフ化したものです。
階級は、0点台(0〜9点)、10点台(10〜19点)、・・・90点台(90〜100点)とします。
(100点満点の人を90点台に含めているのがポイントです)
【実行結果】
平均点:60.3 ヒストグラム 0点台 * 10点台 ** 20点台 ****** 30点台 ** 40点台 ************** 50点台 **************** 60点台 **************************** 70点台 ***************** 80点台 ********** 90点台 ****
【ForArrayNormalPractice.java】
public class ForArrayNormalPractice { public static void main(String[] args) { // 100人分のテストの点数を格納した配列変数points int[] points = { 69, 40, 88, 68, 13, 62, 45, 43, 28, 69, 54, 77, 81, 34, 41, 78, 59, 21, 45, 64, 55, 18, 63, 80, 64, 26, 52, 44, 61, 50, 44, 82, 56, 74, 67, 98, 58, 84, 77, 70, 60, 77, 64, 89, 59, 74, 21, 66, 85, 68, 90, 48, 64, 80, 63, 47, 70, 79, 51, 66, 23, 84, 57, 57, 76, 60, 100, 66, 79, 61, 47, 66, 76, 45, 90, 69, 72, 51, 86, 64, 57, 51, 42, 60, 71, 69, 7, 62, 77, 61, 43, 50, 68, 30, 78, 58, 40, 62, 70, 22 }; // ここからコーディングしてください } }
問題1-22
(この問題はEclipseを使うとエラーになるケースがあります)
String型の変数inputPasswordが宣言してあります。
System.console().readLIne() の記述は、キーボードから文字列の入力を受け付けるもので、その値で変数inputPasswordを初期化しています。
StringImportantPracticeクラスには、正しいパスワードを表現するString型の定数PASSWORDが定義してあります。
キーボードから入力したパスワードの値がパスワード定数の値と等しい場合は「パスワードが一致しました」と表示し、パスワード定数の値と等しくない場合は「パスワードが一致しません」と表示してください。
【実行結果】
パスワードを入力してください ABC パスワードが一致しません
パスワードを入力してください XYZ パスワードが一致しました
【StringImportantPractice.java】
public class StringImportantPractice { // 正しいパスワード定数 private static final String PASSWORD = "XYZ"; public static void main(String[] args) { System.out.println("パスワードを入力してください"); // 入力パスワード変数の宣言と初期化 String inputPassword = System.console().readLine(); // ここからパスワードの一致を調べてください } }
問題1-23
(この問題はEclipseを使うとエラーになるケースがあります)
あるアパートに住む住人を表すapartmentというString型の変数があります。
配列の1次元目はアパートの階数、2次元目は号室を表現しています。
(つまりapartment[0][1]は1階2号室の住人の名前になります)
キーボードから検索したい人の名前を入力し、アパートにその人が住んでいるかを調査してください。
System.console().readLine() の記述は、キーボードから文字列の入力を受け付けるもので、その値でString型変数nameを初期化しています。
見つかった場合は、「○人目の○○さんは、○階の○号室に住んでいます」と表示してください。
ポイントは同名の方が住んでいる場合を考慮することです。
また、見つからなかった場合は「○○さんはこのアパートには住んでいません」と表示してください。
【実行結果】
検索する名前を入力してください 後藤 1人目の後藤さんは、1階の1号室に住んでいます 2人目の後藤さんは、3階の4号室に住んでいます 3人目の後藤さんは、4階の3号室に住んでいます
検索する名前を入力してください 上戸 上戸さんはこのアパートには住んでいません
【StringArrayPractice.java】
public class StringArrayPractice { public static void main(String[] args) { // アパートに住む住人2次元配列変数 String[][] apartment = { {"後藤", "矢口", "石川", "吉澤", "藤本"}, {"亀井", "小川", "紺野"}, {"石川", "安部", "安田", "後藤"}, {"石黒", "福田", "後藤"} }; System.out.println("検索する名前を入力してください"); // 検索するname変数の宣言とキーボード入力値による初期化 String name = System.console().readLine(); // ここからコーディングしてください } }
参考図書
独学で挫折しそうになったら、オンラインプログラミングスクール
LINE公式アカウント
仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】