課題 (03:スプレッドシート)

作業について

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

パッケージの名前
j1.lesson03

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

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

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

新しい内容

スプレッドシートをクリックさせる

今回紹介するものは、「スプレッドシート上のマスをクリックさせる」という命令です。

package j1.lesson03;

import gpjava.Spreadsheet;

public class SelectS1 {

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

    void start() {
        Spreadsheet.show();
        Spreadsheet.waitForSelect("どこかクリックしてください");
        int row = Spreadsheet.getSelectedRow();
        int column = Spreadsheet.getSelectedColumn();
        Spreadsheet.setLine(0, row + "行目" + column + "列目をクリック");
    }
}

この「Spreadsheet.waitForSelect」という命令を使うと、プログラムの実行を一時的に停止してどこかのマスがクリックされるのを待ちます。クリックされたマスは、「Spreadsheet.getSelectedRow」と「Spreadsheet.getSelectedColumn」という2つの命令を使ってそれぞれクリックされた行の番号と、クリックされた列の番号を取り出せます。

まとめると、次のような方法で「スプレッドシート上のマスをクリックさせる」という処理を行い、そのクリックされたマスを判定できます。

Spreadsheet.waitForSelect([表示する文字列]);
int [変数の名前(行番号)] = Spreadsheet.getSelectedRow();
int [変数の名前(列番号)] = Spreadsheet.getSelectedColumn();

問題

1. スプレッドシートの中から100を探すプログラム

作成するクラスの名前
FindS1

numbers03-1.txtの内容をスプレッドシート上に読みだして、その中から100を探してクリックするプログラムを作成してください。

正しく100を記憶させたマスをクリックしたら「正解です」とメッセージダイアログに表示し、それ以外では「それは(マスの値)です」とメッセージダイアログに表示してください。ただし、(マスの値)の部分には、その時クリックされた数値が入ります。

プログラムが完成したら、同じプログラムで別のファイルnumbers03-2.txtの内容をスプレッドシート上に読みだして正しく動作するか確認してください。これも一つだけ「100」が混ざっています。

2. ファイルから読み出した得点表から成績を算出するプログラム

作成するクラスの名前
GradingS1

score03-1.txtの内容をスプレッドシート上に読みだして、Alice, Bob, Charleyの3人の合否を判定してください。

成績
Alice 30      
Bob 98      
Charley 75      

それぞれ60点以上で合格として、該当する行の得点の右隣のマスにそれぞれ「合格」と表示してください。不合格の場合はなにも表示しないで構いません (「不合格」と表示してもいいです)。

成績
Alice 30      
Bob 98 合格    
Charley 75 合格    

プログラムが完成したら、同じプログラムで別のファイルscore03-2.txtの内容をスプレッドシート上に読みだして正しく動作するか確認してください。このファイルは3人の得点が変わっているだけの内容です。

3. Javaのクイズ

作成するクラスの名前
JavaQuizS1

Javaを題材にした4択のクイズを出題するプログラムを作成してください。

クイズは次のような形式でスプレッドシート上に表示し、(選択肢X)のいずれかをクリックして解答できるようにしてください。正解の場合には「正解です」、不正解の場合には「不正解です」、関係ない個所がクリックされたら「選択肢から選んでください」とメッセージダイアログに表示されるようにしてください。

(問題文)
(選択肢0) (選択肢1) (選択肢2) (選択肢3)  

問題が思いつかない場合には、下記のような問題を出題してください (正解は自分で確認してください)。

以下のうち、変数の名前に使えるものはどれでしょうか?
void goto $ #  

ヒント

選択肢1は1行目0列目にあるので、それがクリックされたかどうかは「行が1かつ列が0」というような条件で書けます。

4. ファイルから読み出した得点表から最優秀者を検出するプログラム。

作成するクラスの名前
MaxS1

score03-1.txtの内容をスプレッドシート上に読みだして、Alice, Bob, Charleyの3人の中から最も得点が高い人を探して表示してください。

成績
Alice 30      
Bob 98      
Charley 75      

上記のような内容を読み出したら、Charleyの次の行に最も得点が高い人の名前を表示します。

成績
Alice 30      
Bob 98      
Charley 75      
成績優秀者 Bob      

ただし、60点以上の人が一人もいない場合には、ここに「なし」と表示してください。これはscore03-3.txtを読み出すと確認できます。

成績
Alice 45      
Bob 59      
Charley 0      
成績優秀者 なし      

プログラムが完成したら、同じプログラムで別のファイルscore03-2.txtの内容をスプレッドシート上に読みだして正しく動作するか確認してください。このファイルは3人の得点が変わっているだけの内容です。