12_総合演習

目標:第67回・第63回 Java 3級 過去問を時間を計って解きます


■ 試験の構成おさらい

出題内容この授業での対応単元
問1Javaの特徴・基本知識(正誤判定 6問)01・02・03
問2オブジェクト指向の概念(空欄補充 10問)09・10
問3データ型・演算・型変換(プログラム実行結果 5問)03・04
問4制御文・配列・メソッド(プログラム実行結果/空欄補充 6問)05・06・07・08
問5プログラム読解・空欄補充(長文 5問)全単元
問6複数クラス・クラスライブラリを使ったプログラム(長文 5問)全単元・11
試験時間は60分。全問必須(6問すべて回答)。

■ 問1・問2:知識問題チェックリスト

以下を見ずに言えるか確認しましょう。答えられないものを重点的に復習してください。

問1 よく出る正誤ポイント一覧
記述正誤理由
JREはJavaプログラムの実行に必要なソフトウェアである✅ 正しい
ソースファイルの拡張子は .jv にする❌ 誤り正しくは .java
最初に呼び出されるメソッドは start メソッドである❌ 誤り正しくは main
コメントは // の1種類しかない❌ 誤り// /* */ /** */ の3種類
あるJVMで動くプログラムは別のJVMでも動く✅ 正しいWORA
Javaのプログラム内部の文字コードはUnicodeである✅ 正しい
Javaの基本データ型は整数・浮動小数点・文字・論理型である✅ 正しいString は基本型ではない
ソースファイルをコンパイルしてバイトコードを生成しJVMで実行する✅ 正しい
問2 OOP用語チェック
用語意味
メンバ変数(フィールド)クラスが持つデータ
メソッドクラスが持つ処理
インスタンスクラスから new で作った実体
メッセージインスタンスへのメソッド呼び出し
カプセル化データを隠蔽してメソッド経由でのみ操作させること
継承(インヘリタンス)既存クラスを引き継いで新クラスを作ること
スーパークラス継承元(親)のクラス
サブクラス継承先(子)のクラス
多態性(ポリモーフィズム)同じ操作でもインスタンスの種類によって動作が変わること

■ 問3・問4:プログラムトレース練習

各問題を自分で解いてから答えを確認しましょう。

【第67回 問3(17)】単項演算子

int a = 6;
System.out.println(-a - 2);
答えを見る
-8

単項の -a が先に評価されて -6。その後 -6 - 2 = -8。

【第67回 問3(18)】型変換のコンパイルエラー

int x = 35;
short y = x + 10000;
System.out.println(y);
答えを見る
コンパイルエラー(4行目)

x + 10000 の結果は int 型。short への代入にはキャストが必要。

【第67回 問3(20)】整数除算

int a = 3 / 8;
double b = 3 / 8.0;
System.out.println(a + " " + b);
答えを見る
0 0.375

3/8 は整数除算で 0。3/8.0 は double 計算で 0.375。

【第67回 問4(22)】配列とfor文

int[] data = {3, 5, 6, 9, 10, 13, 16};
for (int i = 0; i < data.length; i += 2) {
    System.out.print(data[i] + ", ");
}
答えを見る
3, 6, 10, 16,

i = 0, 2, 4, 6 → data[0]=3, data[2]=6, data[4]=10, data[6]=16

【第67回 問4(23)】switchのフォールスルー

int a = 4;
switch (a - a / 2 * 2) {
    case 0:
        System.out.println("zero");
    case 1:
        System.out.println("one");
}
答えを見る
zero one

a - a/2*2 = 4 - 2*2 = 0 → case 0 に入る。break なしでフォールスルーして case 1 も実行。

【第67回 問4(24)】前置デクリメントとwhile

int a = 5;
while (a > 0) {
    System.out.println(--a);
    a--;
}
答えを見る
4 2 0

1ループで a が2減ります。前置 --a で表示前に減算。

【第63回 問3(18)】キャスト

int t = (int)4.99999;
System.out.print(t);
答えを見る
4

double → int のキャストは小数点以下を切り捨て。四捨五入ではありません。

【第63回 問4(22)】String の for ループ

String mozi = "";
for (int i = 0; i < 3; i++) {
    mozi = mozi + "@";
}
System.out.print(mozi);
答えを見る
@@@

空文字に "@" を3回連結。


■ 問5・問6:長文問題の読み方

問5・問6は長文ですが、解き方には流れがあります。

ステップやること
プログラムの説明(日本語)を読んで「何をするプログラムか」を把握します
クラス構成とメソッドの一覧表を確認します
実行結果例を先に見て、期待する動作を理解します
空欄の前後のコードを読んで、何が入るかを推測します
選択肢を代入して論理的に正しいかを確認します
問5・問6は全部を完全に理解しようとすると時間が足りません。
各空欄の周辺だけを読んで解く練習をしましょう。

【第67回 問5 空欄 (30)】rankの初期値

「100mのタイムが速い順に5人格納。新しい走者の順位を求める」プログラム。

int rank = [ (30) ]; の空欄を選べ。

選択肢:ア -1 イ 0 ウ 1 エ 5

答えを見る

答え:ウ 1

新しい走者は最初「1位」と仮定して、比較しながら順位を下げていく設計。rank の初期値は 1。

【第67回 問6 空欄 (35)】バス停名の存在チェック

バスの運賃計算プログラム。存在しないバス停名が入力された場合にエラーを表示する。

if ( [ (35) ] ) { System.out.println("Error"); return; }

選択肢:ア f == -1 && t == -1 イ f == -1 || t == -1 ウ f >= 0 && t >= 0 エ f >= 0 || t >= 0

答えを見る

答え:f == -1 || t == -1

indexOf が -1 を返す = 存在しないバス停。乗車か降車のどちらか一方でも -1 ならエラー → ||(OR)を使います。


■ 模擬テスト:時間を計って解きましょう

手元にある第67回・第63回の問題冊子を使って、実際の試験形式で解きましょう。

時間配分の目安(60分):
目安時間ポイント
問1・問2各 5〜7分知識問題。迷ったら先に進む
問3・問4各 8〜10分トレース。紙に書いて追う
問5・問6各 10〜12分長文。説明文と実行例を先に読む

● 解き終わったら確認しましょう

確認項目チェック
問1・問2 の間違えた問題の用語を言えるか
問3・問4 のトレースで間違えた箇所はどこか(前置後置・フォールスルー・型変換)
問5・問6 で空欄の前後をどこまで読んだか
時間は足りたか(足りなければどの問で時間を使いすぎたか)

■ 苦手なパターン別の復習リスト

間違えやすいパターン復習する単元
前置・後置インクリメントの違い04_演算子
switch のフォールスルー05_制御文
int/int の整数除算03_データ型
short や float へのキャストエラー03_データ型
indexOf の -1 判定11_クラスライブラリ
OOP用語(カプセル化・継承・メッセージ)10_OOP基礎
コマンドライン引数と parseDouble11_クラスライブラリ・00_環境整備