課題 (02:スプレッドシート)
作業について
今回の課題は以下のパッケージに作成してください。
| パッケージの名前 |
|---|
| j1.lesson02 |
作成するクラスの名前は問題ごとに指示があります。下記を参照してください
課題の提出方法については下記を参照してください。
また、別のコンピューター上に移動する際には、下記を参考にプログラムを持ち帰ってください。
新しい内容
ファイルからデータを読み取る
1つ目は、ファイルの内容をスプレッドシート上に表示する機能です。
この機能を試すために、次の2つのファイルをダウンロードしてコンピューター上に保存しておいてください。(ブラウザによりますが、右クリックしてコンテキストメニューから「対象をファイルに保存」などを選択します)
下記のように、「Spreadsheet.show();」に続いて「Spreadsheet.load();」という命令を書きます。
package j1.lesson02;
import gpjava.Spreadsheet;
public class LoadS1 {
public static void main(String[] args) {
new LoadS1().start();
}
void start() {
Spreadsheet.show();
Spreadsheet.load();
}
}
するとファイルを選択するダイアログが表示されますので、先ほどダウンロードしたファイルを選択してください。ファイルの読み出しに成功すると、スプレッドシートには次のように表示されます (example02-1.txt)。
| このように | ファイルから | |||
| スプレッドシートの | データを | |||
| 読みだして利用することができます | ||||
| 整数や | 実数も | |||
| 100 | 15.2 | |||
| このように | 使えます | |||
数値を取り扱う
2つ目は、スプレッドシートに整数や実数を記憶させたり、記憶させた値をコピーして使ったりする機能です。
package j1.lesson02;
import gpjava.Spreadsheet;
import javax.swing.JOptionPane;
public class GetSetS1 {
public static void main(String[] args) {
new GetSetS1().start();
}
void start() {
Spreadsheet.show();
Spreadsheet.setInt(0, 0, 100);
Spreadsheet.setDouble(1, 0, 0.05);
int v1 = Spreadsheet.getInt(0, 0);
JOptionPane.showMessageDialog(null, "(0, 0) = " + v1);
double v2 = Spreadsheet.getDouble(1, 0);
JOptionPane.showMessageDialog(null, "(1, 0) = " + v2);
}
}
スプレッドシートは縦横に並んだ変数のような機能を持っていて、「Spreadsheet.setInt」や「Spreadsheet.setDouble」という命令でそれぞれ整数と実数を記憶させられます。
これらは次のように使います。行番号や列番号は、「Spreadsheet.setString」と同様に0から始まることに注意してください。
Spreadsheet.setDouble([行番号], [列番号], [記憶させる実数]);
また、記憶させた整数や実数を取り出すには、「Spreadsheet.getInt」や「Spreadsheet.getDouble」という命令を利用します。
これらは次のように使います。
double [変数の名前] = Spreadsheet.getDouble([行番号], [列番号]);
さらに、先ほどの「Spreadsheet.load();」という命令で読みだした内容も、これらの命令を使って整数や実数を取り出せます。
問題
1. ファイルから読み出したデータをメッセージダイアログに表示
| 作成するクラスの名前 |
|---|
| ShowLoadedS1 |
literals02-1.txtの内容をスプレッドシート上に読みだして、そこに含まれる文字列、整数、実数の内容をそれぞれメッセージダイアログ上に表示してください。
literals02-1.txtは、次のように1行目の最初の列に文字列が、2行目の最初の列に整数が、3行目の最初の列に実数がそれぞれ入っています。
| (文字列) | ||||
| (整数) | ||||
| (実数) |
これを表示させる際には、次のようにメッセージダイアログを3回表示してください。
ただし、上記の「(文字列)」「(整数)」「(実数)」の部分は、それぞれファイルから読み出した文字列、整数、実数の内容を表示するようにしてください。
プログラムが完成したら、同じプログラムで別のファイルliterals02-2.txtの内容をスプレッドシート上に読みだして正しく動作するか確認してください (違う内容が表示されるはずです)。
念のため、「Spreadsheet.load();」命令を使うところまでのプログラムを下記に示します。
package j1.lesson02;
import gpjava.Spreadsheet;
import javax.swing.JOptionPane;
public class ShowLoadedS1 {
public static void main(String[] args) {
new ShowLoadedS1().start();
}
void start() {
Spreadsheet.show();
Spreadsheet.load();
}
}
2. ファイルから読み出したデータをの合計を計算
| 作成するクラスの名前 |
|---|
| SumS1 |
earnings02-1.txtの内容をスプレッドシート上に読みだして、Alice, Bob, Charleyの3人の売り上げの合計を計算してください。
| 売上一覧 | ||||
| Alice | 980000 | |||
| Bob | 1500000 | |||
| Charley | 30000 | |||
計算した結果は、次のようにスプレッドシートのCharleyの行の直後に表示してください。1列目には解りやすいように「合計」という文字列を表示しましょう。
| 売上一覧 | ||||
| Alice | 980000 | |||
| Bob | 1500000 | |||
| Charley | 30000 | |||
| 合計 | 2510000 | |||
ただし、それぞれの売り上げは整数として保存しています。
プログラムが完成したら、同じプログラムで別のファイルearnings02-2.txtの内容をスプレッドシート上に読みだして正しく動作するか確認してください。このファイルは3人の売上高が変わっているだけの内容です。
3. ファイルから読み出したデータをの税込み価格を計算
| 作成するクラスの名前 |
|---|
| TaxS1 |
earnings02-1.txtの内容をスプレッドシート上に読みだして、Alice, Bob, Charleyの3人の売り上げの合計と税込み価格を計算してください。
| 売上一覧 | ||||
| Alice | 980000 | |||
| Bob | 1500000 | |||
| Charley | 30000 | |||
計算する内容は、小計、税額、税込の合計の3種類です。税率は入力ダイアログから実数で入力できるようにしてください。計算した結果は、次のようにスプレッドシートのCharleyの行の直後に順に表示してください。それぞれの1列目には解りやすいように「小計」「税額」「合計」という文字列を表示しましょう。
| 売上一覧 | ||||
| Alice | 980000 | |||
| Bob | 1500000 | |||
| Charley | 30000 | |||
| 小計 | 2510000 | |||
| 税額 | 125500 | |||
| 合計 | 2635500 | |||
なお、上記の例は入力ダイアログに「0.05」という税率を入力した場合の結果です。
プログラムが完成したら、同じプログラムで別のファイルearnings02-2.txtの内容をスプレッドシート上に読みだして正しく動作するか確認してください。このファイルは3人の売上高が変わっているだけの内容です。
ヒント
整数と実数の掛け算の結果は実数になります。「Spreadsheet.setInt」命令の3つ目の値に実数を指定すると、小数部を切り捨てて整数として表示するので、活用してください。