発展課題 (r1:スプレッドシート)
注意点
このページは復習 (1)の発展課題を掲載しています。発展課題については「復習回の課題について」をよく読んでから取り掛かってください。
作業について
今回の課題は以下のパッケージに作成してください。
| パッケージの名前 |
|---|
| j1.review01 |
作成するクラスの名前は問題ごとに指示があります。下記を参照してください
課題の提出方法については下記を参照してください。
また、別のコンピューター上に移動する際には、下記を参考にプログラムを持ち帰ってください。
新しい内容
行の入れ替え
今回は2つの行を入れ替える方法について紹介します。
package j1.review01;
import gpjava.Spreadsheet;
public class SwapLineS1 {
public static void main(String[] args) {
new SwapLineS1().start();
}
void start() {
Spreadsheet.show();
Spreadsheet.setString(0, 0, "1行目");
Spreadsheet.setString(1, 1, "2行目");
Spreadsheet.setString(2, 2, "3行目");
Spreadsheet.setString(3, 3, "4行目");
Spreadsheet.waitForSelect("行を選択(1)");
int first = Spreadsheet.getSelectedRow();
Spreadsheet.waitForSelect("行を選択(2)");
int second = Spreadsheet.getSelectedRow();
Spreadsheet.swapLine(first, second);
}
}
このプログラムは、2つのマスを選択して、それぞれのマスがある行の内容を入れ替えます。選択する前は、次のように斜めにそれぞれの文字列が並んでいます。
| 1行目 | ||||
| 2行目 | ||||
| 3行目 | ||||
| 4行目 |
ここから、「1行目」と書いたマスと「4行目」と書いたマスを続けてクリックすると、それぞれの行の内容が入れ替わります。
| 4行目 | ||||
| 2行目 | ||||
| 3行目 | ||||
| 1行目 |
このように、「Spreadsheet.swapLine」という命令で2つの行を入れ替えます。これは次のように書きます。
ほかの例として、2行目と3行目を続けてクリックすると、次のように入れ替わります。
| 1行目 | ||||
| 3行目 | ||||
| 2行目 | ||||
| 4行目 |
なお、同じ行を続けて2回クリックすると何も起こりません。
| 1行目 | ||||
| 2行目 | ||||
| 3行目 | ||||
| 4行目 |
今回の課題では、この「行を入れ替える」という命令を使ってプログラムを作成してもらいます。
問題
得点順に並び替えるプログラム
| 作成するクラスの名前 |
|---|
| SortS1 |
scorer1-1.txtの内容をスプレッドシート上に読みだして、合計5人を成績が高い順に並び替えるプログラムを作成してください。ただし、同じ得点の人がいたらどちらを先にしても構いません。
scorer1-1.txtの内容は次のとおりです。
| 名前 | 得点 | |||
| Alice | 0 | |||
| Bob | 98 | |||
| Charley | 75 | |||
| David | 59 | |||
| Elvis | 64 |
これを読み出して並び替えると、次のようになります。
| 名前 | 得点 | |||
| Bob | 98 | |||
| Charley | 75 | |||
| Elvis | 64 | |||
| David | 59 | |||
| Alice | 0 |
プログラムが完成したら、同じプログラムで別のファイルscorer1-2.txtの内容をスプレッドシート上に読みだして正しく動作するか確認してください。このファイルはそれぞれの得点が変わっているだけの内容です。
ヒント
まず最初に、5人の中で1番得点が高い人を2行目(最初の行)に移動してください。次に、残りの4人で1番得点が高い人を3行目(次の行)に移動してください。