課題 (06:ベーシック)

作業について

今回の課題は以下のパッケージに作成してください。

パッケージの名前
j1.lesson06

作成するクラスの名前は問題ごとに指示があります。下記を参照してください

課題の提出方法については下記を参照してください。

また、別のコンピューター上に移動する際には、下記を参考にプログラムを持ち帰ってください。

問題

1. 配列の範囲 (考察課題)

作成するファイルの名前
MessagesError.txt

ファイルの作成方法については下記を参照してください。

配列からメッセージを選択して表示するプログラムを書きましたが、正しく動作しません。

package j1.lesson06;

import javax.swing.JOptionPane;

public class MessagesError {

    public static void main(String[] args) {
        new MessagesError().start();
    }

    void start() {
        String[] messages = new String[8];
        messages[0] = "入出力";
        messages[1] = "式と変数";
        messages[2] = "条件分岐";
        messages[3] = "手続き";
        messages[4] = "関数";
        messages[5] = "値の列";
        messages[6] = "繰り返し";
        messages[7] = "複合データ";
        String input = JOptionPane.showInputDialog("何回目の授業ですか?\n" +
            "1から8で入力してください");
        int index = Integer.parseInt(input);
        if (index < 1 || index > 8) {
            JOptionPane.showMessageDialog(null, "1から8で入力してください");
        }
        else {
            JOptionPane.showMessageDialog(null,
                index + "回目の授業は" + messages[index]);
        }
    }
}

以下の問題に答えて下さい。

  1. エラーになるような入力を1つ挙げて下さい
  2. その入力でエラーになる理由は何でしょうか
  3. どのように修正すれば正しい動作になるでしょうか

2. 1から3個の値の平均を計算するプログラム

作成するクラスの名前
SplitAverage

1個から3個までの実数をカンマ区切りで入力して、それらの平均値を表示するプログラムを作成してください。

ただし、1個も実数が入力されなかった場合や4個以上入力された場合については考えなくてかまいません。

ヒント

入力された実数の個数は、split(",")の結果となる配列の長さを調べれば分かります。これが1, 2, 3のときは平均を計算しましょう。

3. 5種類の問題の中から1つ選んで出題するプログラム。

作成するクラスの名前
QuizArray

5問の中から問題を選んで出題するプログラムを作成してください。

このプログラムは、まず入力ダイアログに1から5までの整数をどれか入力すると、その数字に対応したクイズが出題されます。クイズに正解すると「正解です」と表示し、間違えると「不正解です」と表示するようにしてください。プログラムを1回実行したときに出題する問題は1問だけです。

今回のクイズは、startメソッドで作成した2つの配列を利用して出題してください。この配列自体を書き換えてもかまいませんが、配列に含まれる値からのみ出題するようにしてください。

ヒント

過去に類似の問題をやったことがありますが、当時は配列を紹介していなかったため、問題を選んだあとに分岐で出題をしていたと思います。今回は配列を使えますので、問題情報は分岐を利用しなくても取り出せます。ただし、配列のインデックスが0から始まることに注意してください。

4. 5要素の配列に含まれる値がすべて条件を満たすかどうかを判定するプログラム

作成するクラスの名前
ForAllPassed

5個のテストの結果を入力して、全て合格かどうかを判定するプログラムを作成してください。ただし、プログラムは途中まで作成してありますので、足りないメソッドを追加してください。

package j1.lesson06;

import javax.swing.JOptionPane;

public class ForAllPassed {

    public static void main(String[] args) {
        new ForAllPassed().start();
    }

    void start() {
        String input = JOptionPane.showInputDialog("5個の得点をカンマ区切りで入力");
        String[] fields = input.split(",");
        if (fields.length != 5) {
            JOptionPane.showMessageDialog(null, "正しくない入力です: " + input);
        }
        else {
            int[] scores = toIntArray(fields);
            if (isAllPassed(scores)) {
                JOptionPane.showMessageDialog(null, "全て合格です");
            }
            else {
                JOptionPane.showMessageDialog(null, "不合格のものがあります");
            }
        }
    }

    int[] toIntArray(String[] fields) {
        
        results[0] = Integer.parseInt(fields[0]);
        results[1] = Integer.parseInt(fields[1]);
        results[2] = Integer.parseInt(fields[2]);
        results[3] = Integer.parseInt(fields[3]);
        results[4] = Integer.parseInt(fields[4]);
        return results;
    }
}

それぞれのテストは、60点以上で合格とします。配列にひとつでも60点未満の値があれば、不合格になるようにしてください。