###実現したいこと
1 Program の PutPrice Method で、金額が5個の固定になっているが、CSVFile から値を読む形にする。個数は、任意とする。
2 Display 上に、左半分と右半分に2つの Text 表示領域を作成して、左側には、元の Data、右側には出力の Data を表示する。
3 2 の表示で、左半分の表示領域に、「開く」「開始」「終了」のボタンを作成する。「開 く」ボタンで、元値 File を選択し、左の表示領域に表示する。「開始」ボタンで、計算を始め、結果を右側 の表示領域に表示する。「終了」ボタンで Program を終了する。
4 表示領域を一つにして、「開く」「開始」「終了」ボタンを作成する。「開く」ボタンで、元値 File を選択し、表示領域に表示する。「開始」ボタンで、出力 File を設定し、計算を始め、結果を画面に 表示すると同時に出力ファイルを作成する。「終了」ボタンで Program を終了する。
###発生している問題・エラーメッセージ
色々探してみてCSVfileの値を読み込んでカンマ区切りで配列に格納する方法なのかと思い試してみたんですがどれもエラーがでて上手くいかずどうして良いかわからなくなってしまいました。とりあえず実現したいことの1をできるようになりたいです。まだプログラム初心者でヒントや参考になるサイトなどがあれば教えて欲しいです。
###該当のソースコード
CalculatePrice.javaファイル
class CalculatePrice {
private int workArea;
private boolean available = false;
//synchronized指定。pricePutメソッドが終了するまで、 //メソッドが属するオブジェクトはアクセスされない public synchronized void pricePut(int price) { while (available == true) { try { wait(); //availableがtrueの間、wait } catch (InterruptedException e) { } } //workAreaに値をセットする処理 workArea = price; available = true; //availableにtrueを代入した後wait状態のスレッドを解除 notifyAll(); } //synchronized指定。priceGetメソッドが終了するまで、 //メソッドが属するオブジェクトはアクセスされない public synchronized void priceGet() { while (available == false) { try { wait(); //availableがfalseの間、wait } catch (InterruptedException e) { } } //workAreaから値を抜出す処理 System.out.println("課税後価格は" + workArea * 1.05 + "円です。"); available = false; //availableにfalseを代入した後wait状態のスレッドを解除 notifyAll(); }
}
PutPrice.javaファイル
class PutPrice extends Thread {
private CalculatePrice cp;
private int[ ] price = {100, 200, 300, 400, 500};
//コンストラクタ内で引数に指定されたオブジェクトcpを代入 public PutPrice(CalculatePrice cp) { this.cp = cp; } public void run() { for (int i = 0; i < 5; i++) { //オブジェクトcpのpricePutメソッドを実行 cp.pricePut(price[i]); try { sleep((int)(Math.random() * 100)); } catch (InterruptedException e) { } } }
}
GetPrice.javaファイル
class GetPrice extends Thread {
private CalculatePrice cp;
//コンストラクタ内で引数に指定されたオブジェクトcpを代入
public GetPrice(CalculatePrice cp) {
this.cp = cp;
}
public void run() { for (int i = 0; i < 5; i++) { //オブジェクトcpのpriceGetメソッドを実行 cp.priceGet(); } }
}
ExThread5.javaファイル
public class ExThread5 {
public static void main(String[] args) {
CalculatePrice cp = new CalculatePrice();
//オブジェクトcpを引数にスレッドオブジェクトppの生成
PutPrice pp = new PutPrice(cp);
//オブジェクトcpを引数にスレッドオブジェクトgpの生成
GetPrice gp = new GetPrice(cp);
pp.start(); //スレッドを実行可能状態にする gp.start(); //スレッドを実行可能状態にする }
}