練習問題
9.8 練習問題
本章で習った内容を元に練習問題を解いてください。
問1 次の設問①~⑤について○か×で答えなさい。
設問
① Javaには色々な機能を持ったクラスがたくさん提供されている。
② クラスはメソッドの引数や戻り値の型として定義できない。
③ クラス型の変数はメソッドの引数や戻り値に利用できる。
④ クラス型変数同士の代入は別々のオブジェクトとしてコピーされる。
⑤ クラス型の配列は可変長の配列になる。
問2 次の設問①~⑤に使用するStringクラスのメソッドを選択肢候補より選んで答えなさい。
選択肢
equals substring length charAt split
設問
① 文字列から任意の1文字を取得する。
② 文字列を指定のキーワードで分割して取得する。
③ 文字列型同士の比較を行う。
④ 文字列から任意の長さで文字列を分割して取得する。
⑤ 文字列の長さを取得する。
問3 以下に示すソースコードPractice0901.javaを実行した場合、実行結果の空白①~⑧に入る本のタイトルと価格をそれぞれ答えなさい。
実行結果
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch09exercise
③ 名前: Books
ソースコード① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch09exercise
③ 名前: Practice0901
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる
Books.java
package jp.co.f1.basic.ch09exercise;
public class Books {
private String title; //タイトル
private int price; //価格
//コンストラクタ
public Books(String title,int price){
this.title = title;
this.price = price;
}
//引数を各フィールド変数に設定するメソッド
public void setBookInfo(String title,int price){
this.title = title;
this.price = price;
}
//本の情報を画面に表示するメソッド
public void showBookInfo(){
System.out.println("この本のタイトルは「" + this.title + "」です。");
System.out.println("この本の価格は「" + this.price + "」円です。");
System.out.println("-------------------------------------------");
}
}
Practice0901.java
package jp.co.f1.basic.ch09exercise;
public class Practice0901 {
public static void main(String[] args) {
System.out.println("-------------------------------------------");
Books book1 = new Books("Java入門", 2980);
book1.showBookInfo(); //①と②の結果表示
book1 = new Books("Java基礎",1500);
book1.showBookInfo(); //③と④の結果表示
Books book2 = book1;
book2.showBookInfo(); //⑤と⑥の結果表示
book2.setBookInfo("Java入門基礎", 3200);
book1.showBookInfo(); //⑦と⑧の結果表示
}
}
問4 以下に示すPractice0902.javaのソースコードを、Booksオブジェクト配列を利用した内容のPractice0903.javaを作成しなさい。
作成ヒント
①Booksオブジェクト配列を要素数「5」で定義します。
②繰り返し文を利用しBooksオブジェクト配列に、各要素にオブジェクトを生成して代入します。
③繰り返し文を利用しBooksオブジェクト配列の、各要素からshowBookInfoメソッドを呼び出します。
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch09exercise
③ 名前: Practice0902
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる

問5 Practice0904.javaのソースコードを、以下の変更仕様に基づいたPractice0905.javaを作成しなさい。
変更仕様①mainメソッドの点数格納用配列を、通常のint配列から整数値を扱うArrayList配列に変更する。
②①の変更に合わせてmainメソッド処理内部を、ArrayList配列を利用した方法に変更する。
③showSumScoreメソッドの引数の型を、ArrayList
④③の変更に合わせてshowSumScoreメソッド処理内部を、ArrayList配列を利用した方法に変更する。
ソースコード
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch09exercise
③ 名前: Practice0904
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる
package jp.co.f1.basic.ch09exercise;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Practice0904 {
/*
* 点数が格納された配列を引数に受け取り、その点数を全て表示と
* 合計点を算出して表示します。
*/
public static void showSumScore(int[] score){
int sum=0; //合計点格納用変数
for(int i=0;i<score.length;i++){
System.out.println((i+1)+"人目の点数は「" + score[i] + "」です。");
sum += score[i];
}
System.out.println("合計点は「" + sum + "」です。");
}
public static void main(String[] args) {
int count = 0; //カウント格納用変数
int[] score = new int[5]; //点数格納用配列
//Scannerクラスのオブジェクト生成
Scanner sin = new Scanner(System.in);
//繰り返し処理で5人分の点数入力を行う
while(true){
try{
//キーボードから点数入力
System.out.print("点数を入力して下さい=>");
score[count] = sin.nextInt();
if(count==4){
//5回入力でループを抜ける
break;
}
//カウントをインクリメント
count++;
}catch(InputMismatchException e){
System.out.println("正数値を入力して下さい!");
//入力バッファのクリア
sin.nextLine();
}
}
System.out.println("-------------------------");
//入力点数全てと合計点を表示するメソッド呼び出し
showSumScore(score);
}
}