課題 (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.setInt([行番号], [列番号], [記憶させる整数]);
Spreadsheet.setDouble([行番号], [列番号], [記憶させる実数]);

また、記憶させた整数や実数を取り出すには、「Spreadsheet.getInt」や「Spreadsheet.getDouble」という命令を利用します。

これらは次のように使います。

int [変数の名前] = Spreadsheet.getInt([行番号], [列番号]);
double [変数の名前] = Spreadsheet.getDouble([行番号], [列番号]);

さらに、先ほどの「Spreadsheet.load();」という命令で読みだした内容も、これらの命令を使って整数や実数を取り出せます。

問題

1. ファイルから読み出したデータをメッセージダイアログに表示

作成するクラスの名前
ShowLoadedS1

literals02-1.txtの内容をスプレッドシート上に読みだして、そこに含まれる文字列、整数、実数の内容をそれぞれメッセージダイアログ上に表示してください。

literals02-1.txtは、次のように1行目の最初の列に文字列が、2行目の最初の列に整数が、3行目の最初の列に実数がそれぞれ入っています。

(文字列)        
(整数)        
(実数)        

これを表示させる際には、次のようにメッセージダイアログを3回表示してください。

1行目は(文字列)
2行目は(整数)
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つ目の値に実数を指定すると、小数部を切り捨てて整数として表示するので、活用してください。