練習問題

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

1package jp.co.f1.basic.ch09exercise;
2 
3public class Books {
4  private String title; //タイトル
5  private int price; //価格
6 
7  //コンストラクタ
8  public Books(String title,int price){
9    this.title = title;
10    this.price = price;
11  }
12 
13  //引数を各フィールド変数に設定するメソッド
14  public void setBookInfo(String title,int price){
15    this.title = title;
16    this.price = price;
17  }
18 
19  //本の情報を画面に表示するメソッド
20  public void showBookInfo(){
21    System.out.println("この本のタイトルは「" + this.title + "」です。");
22    System.out.println("この本の価格は「" + this.price + "」円です。");
23    System.out.println("-------------------------------------------");
24  }
25}

Practice0901.java

1package jp.co.f1.basic.ch09exercise;
2 
3public class Practice0901 {
4  public static void main(String[] args) {
5    System.out.println("-------------------------------------------");
6    Books book1 = new Books("Java入門", 2980);
7    book1.showBookInfo(); //①と②の結果表示
8 
9    book1 = new Books("Java基礎",1500);
10    book1.showBookInfo(); //③と④の結果表示
11 
12    Books book2 = book1;
13    book2.showBookInfo(); //⑤と⑥の結果表示
14    book2.setBookInfo("Java入門基礎", 3200);
15 
16    book1.showBookInfo(); //⑦と⑧の結果表示
17 
18  }
19}

問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) にチェックを入れる

1package jp.co.f1.basic.ch09exercise;
2 
3import java.util.InputMismatchException;
4import java.util.Scanner;
5 
6public class Practice0904 {
7  /*
8  * 点数が格納された配列を引数に受け取り、その点数を全て表示と
9  * 合計点を算出して表示します。
10  */
11  public static void showSumScore(int[] score){
12    int sum=0; //合計点格納用変数
13    for(int i=0;i<score.length;i++){
14      System.out.println((i+1)+"人目の点数は「" + score[i] + "」です。");
15 
16      sum += score[i];
17    }
18    System.out.println("合計点は「" + sum + "」です。");
19  }
20 
21  public static void main(String[] args) {
22    int count = 0; //カウント格納用変数
23    int[] score = new int[5]; //点数格納用配列
24 
25    //Scannerクラスのオブジェクト生成
26    Scanner sin = new Scanner(System.in);
27 
28    //繰り返し処理で5人分の点数入力を行う
29    while(true){
30      try{
31        //キーボードから点数入力
32        System.out.print("点数を入力して下さい=>");
33        score[count] = sin.nextInt();
34 
35        if(count==4){
36          //5回入力でループを抜ける
37          break;
38        }
39        //カウントをインクリメント
40        count++;
41 
42      }catch(InputMismatchException e){
43        System.out.println("正数値を入力して下さい!");
44        //入力バッファのクリア
45        sin.nextLine();
46      }
47    }
48 
49    System.out.println("-------------------------");
50    //入力点数全てと合計点を表示するメソッド呼び出し
51    showSumScore(score);
52  }
53}

next>> 9.9 練習問題 解答

f