• 締切済み

プログラミング(JAVA)

1.つぎのような貯水槽の機能を表現するクラスがあるとします。以下の記述に引数で指定した量だけ水を加えるメソッドaddを付加し、その機能を確認できるようmainメソッドを変更し実行させなさい。ただし、水は最大貯水量を超えては入れられないようにしなさい。最大量に達した場合は、警告メッセージを表示するようにしなさい。 ↓↓自分でやったコードですここまでできました///次がわかりません class WaterTank6_1 { double capacity = 100.0; // 最大貯水量(初期値が100リットル) double meter = 0.0; // 水量計の値 void show() { System.out.println(“現在の貯水量は “ + meter + “リットルです。”); } public static void main(String[] args) { WaterTank6_1 tank1 = new WaterTank6_1(); tank1.show(); } } addの仕様 void add(double val)

  • Java
  • 回答数3
  • ありがとう数0

みんなの回答

回答No.3
  • tlmg
  • ベストアンサー率50% (2/4)
回答No.2

このような質問を見るとTAしていた頃を思い出します。 何かの課題のように見受けられるので解答は他の方に任せて、プログラミングで詰まった場合の考え方をひとつ。 もし、どうすればいいのかわからなくなってしまった場合は、問題を分割して簡単なことから実装して行きます。 今回の場合はまず、addに引数で指定した量の水を加える機能だけを付け加えるべきでしょう。 これはmeterを更新するだけなので、簡単にできると思います。(わからなければJavaの基本的な部分が理解できていないのでしょう) 実装したらtank1.showとtank1.addを使って正しく動作しているか確認します。このテスト作業をサボると後々になって泣きを見ることになります。 次はaddを、最大貯水量を越えないように作り変えます。 ただし警告などはせず、最大貯水量を越えるような場合は何もしないようにするだけ良いです。 おそらくif, meter, capacityを使うことになるでしょう。(実装したらまたテストを) 最後は貯水量を越えるaddをしたときに警告を表示するように変更すれば完成です。 初心者のうちは難しいと思いますが、問題を分割することと、その都度テストすることを心掛ければ出来ない問題ではないはずです。

回答No.1

そこらへんのソースをパクってテキトーに組み立てたので、 動くかどうかはしりませんが、イメージは湧くと思います。 また、そこまで求めているのか知りませんが、doubleより BigDecimalを利用した方がいいかもしれません。 public static void main(String[] args) { WaterTank6_1 tank1 = new WaterTank6_1(); while (true) { int x; System.out.print("input integer: "); InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); try { String buf = br.readLine(); if (buf.equals("")) { break; } x = Integer.parseInt(buf); } catch (ClassCastException e) { x = 0; } try { tank1.add(x); catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } tank1.show(); } } void add(double val) { if (this.meter + val > this.capacity) { throw new IllegalArgumentException("最大量超過"); } this.meter += val; }

関連するQ&A

  • プログラミングお願いします(JAVA)

    フィールドとして、「ナンバー」「ガソリン残量」「走行距離」「エンジンの排気量」の4つ、それらの値を表示するメソッド4つから構成されるCar2ラスを作成し、メインメソッドで2つのオブジェクトkcar と bcar を作成し、それぞれに、次の値を代入し、Car2ラスのメソッドを呼び出してそれぞれの値を表示するプログラムを作成しなさい オブジェクト名  ナンバー   ガソリン残量        走行距離   排気量 kcar        552        25.1            22000      2000 bcar        441        33.5           9940        2000 //↓一応自分が書いたコードなので会ってるか分かりませんが、違ってたら教えてください Car2 { int num; double gas; int m; int h; int num1; double gas1; int m1; int h1; void show() { System.out.println("kcar"+num+ +gas+m+h); System.out.println("bcar"+num1+ +gas1+m1+h1); } } class Sample1 { public static void main(String[] args) { Car2 car1; car1 =new Car2(); car1.num=552; car1.gas=25.1; car1.m=22000; car1.h=2000; car1.num1=441; car1.gas1=33.5; car1.m1=9940; car1.h1=2000; car1.show(); } }

  • プログラミングお願いします(java)

    問題 フィールドとして、「ナンバー」「ガソリン残量」「走行距離」「エンジンの排気量」の4つ、それらの値を表示するメソッド4つから構成されるCar2ラスを作成し、メインメソッドで2つのオブジェクトkcar と bcar を作成し、それぞれに、次の値を代入し、Car2ラスのメソッドを呼び出してそれぞれの値を表示するプログラムを作成しなさい オブジェクト名  ナンバー   ガソリン残量        走行距離   排気量 kcar        552        25.1            22000      2000 bcar        441        33.5           9940        2000 ↓一応自分のコードを作成しました・しかしこの問題にあってるか分かりません。違ってたら指摘してください///出来たらコード作成してくださると助かります class Car2 { int num; double gas; int m; int h; int num1; double gas1; int m1; int h1; void show() { System.out.println("kcar"+num+ +gas+m+h); System.out.println("bcar"+num1+ +gas1+m1+h1); } } class Sample1 { public static void main(String[] args) { Car2 car1; car1 =new Car2(); car1.num=552; car1.gas=25.1; car1.m=22000; car1.h=2000; car1.num1=441; car1.gas1=33.5; car1.m1=9940; car1.h1=2000; car1.show(); } }

  • プログラミング 関数について教えて下さい。

    プログラミングについての質問です。 関数を使った以下のプログラムを作成し、実行してみたのですが、上手くいきません。 どこかおかしいのでしょうか? 教えていただけると幸いです。ご回答お待ちしております。 #include <stdio.h> double add (double x,double y); int main(void) { double a,b,c; printf("double型の数を入力して下さい。\n"); scanf("%f\n",&a); printf("もうひとつdouble型の数を入力してください\n"); scanf("%f\n",&b); c=add(a,b); printf("入力された2数の和は%fです。\n",c); return 0; } double add(double x,double y) { double z; z=x+y; return z; }

  • Java初心者です

    次のようなプログラムを作りました interface Vehicle{ void drive(); } abstract class Animal{ abstract void show(); } class Lion extends Animal{ public void show(){ System.out.println("ライオンです"); } } class Horse extends Animal implements Vehicle{ public void show(){ System.out.println("馬です"); } public void drive(){ System.out.println("乗り物として使えます"); } } class Elephant extends Animal implements Vehicle{ public void show(){ System.out.println("象です"); } public void drive(){ System.out.println("乗り物として使えます"); } } class Bear extends Animal{ public void show(){ System.out.println("熊です"); } } class twentyeight{ public static void main(String args[]){ Animal an[]; an = new Animal[4]; an[0] = new Lion(); an[1] = new Horse(); an[2] = new Elephant(); an[3] = new Bear(); for(int i = 0;i < an.length;i++){ if(an[i] instanceof Vehicle){ an[i].drive();//ここにエラーが出る } else{ an[i].show(); } } } } インターフェイスを実装しているオブジェクトを判別し、そのdriveメソッドの呼び出しをしたいのですができません、どなたか教えてください。

    • ベストアンサー
    • Java
  • 数学

    新卒、就活、地方中小企業の事務•営業職志望で今日受けた適性検査の問題の答え、解説をお願いします。 あと、難易度はどれくらいでしょうか?理系の人や、大企業に受かる人なら、簡単ですか? 問題は以下の通りです。 地下水を貯水場A,B,Cに分配する。 貯水場Aの水の量は、前日の貯水場Aの水の量の3/4と、前日の貯水場Bの水の量の1/8を足した量である。 貯水場Bの水の量は、前日の貯水場Aの水の量の1/4と、前日の貯水場Bの水の量の3/4と、前日の貯水場Cの水の量の1/4を足した量である。 貯水場Cの水の量は、前日の貯水場Bの水の量の1/8と、前日の貯水場Cの水の量の3/4を足した量である。 このとき、次の問いに答えなさい。 (1)4/22日の貯水場A,B,Cの水の量がそれぞれ4L,8L,8Lであるとき、4/23日のA,B,Cそれぞれの水の量を答えなさい。 (2)4/24日の水の量を答えなさい。 (3)4/22日の貯水場A,B,Cの水の量をx L,y L,zLとする。 4/23日の貯水場A,B,Cの水の量もxL,yL,zLとなる場合はあるか。 あるなら、このようなx,y,zの組み合わせを一つ求めよ。 ないなら無しと書きなさい。 (4)この分配を続けて行くと、ある貯水場の水の量だけが他の2つの貯水場よりも多くなる。どの貯水場がどれだけ多くなるか答えなさい。

  • show()について

    class Rectangle { public static void main(String args[]) { double base=6; double height=5; double area; area=calc(base, height); System.out.println("area="+area); void show(); } public static double calc( double base, double height){ double area; area=(base*height); return area; } } このように四角形の面積を求めるプログラムをつくったんですが、 これにshowメソッドを加えて縦よ横の長さを表示したいのですが どのようにすればいいのでしょうか?

  • 全然わかりません JAVA 最大値 教えてください。

    全然わかりません JAVA 最大値 教えてください。 public class MaxMethods { ここに、int型の引数を2個とって、より大きい方の値 (両方とも同じ値のときはその値)を返す staticメソッドmax()を定義 ここに、int型の引数を3個とって、より大きい方の値 (両方とも同じ値のときはその値)を返す staticメソッドmax()を定義 public static void main(String[] args){ System.outprintln((max7,2)); System.outprintln((max8,9)); System.outprintln((max7,2,10)); System.outprintln((max8,11,2));

  • "add"とは?f

    class Car { int num; double gas; void setNum(int n) { num = n; System.out.println("ナンバーを" + num + "にしました。"); } void setGas(double g) { gas = g; System.out.println("ガソリン量を" + gas + "にしました。"); System.out.println("この車は満タンで40リットル入ります。"); } void show() { System.out.println("車のナンバーは"+num+"です。"); System.out.println("ガソリン量は"+gas+"です。"); } } class Prog11_1 { public static void main(String args[]) { Car car1 = new Car(); Car car2 = new Car(); car1.setNum(1234); car1.setGas(20.5); car2.setNum(5678); car2.setGas(30.8); car1.addGas(10.0); car2.addGas(10.0); car1.show(); car2.show(); } } 上記のプログラムの足りないところを補い、完成させるというものなんですが、"add"というのは一体どのような役割を持っているものなんでしょうか? 分かる方いらっしゃいましたら、よろしくお願いします。

    • ベストアンサー
    • Java
  • 問題の意味が分かりません

    javaの勉強をしているのですが問題の意味が分からないため 問題を解けません。 ”私の疑問点は「」を使って表していきます。” 問題文 メインメソッド (1) Lendmanagerクラスのインスタンスlendmanagerを作成する 以下endが入力されるまで(1)~(6)を繰り返す。(実行時は6冊分入力する) 「mainの処理が開始されるときに強制的に(最低でも)6冊分は入力すると言う意味でしょうか」 (2) キーボードから書名、作者名を入力 (3) Bookクラスのインスタンスbookを作成する (4) setTitle()メソッドでタイトルを設定する (5) setAuthor()メソッドで著者名を入力 (6) Lendmanagerクラスのaddメソッドでこの本を追加する(Lendmanagerに本を登録する) (7) 登録終了後Lendmanagerクラスのshow()メソッドで登録された本の書名、作者名を表示 ---------------------------------------------------------------- Lendmanagerクラスでは (1) コンストラクタでBook型の配列aBookを要素5で確保 (2)iLengthに初期値0を設定。(aBookの要素数) (3)add()メソッドでiLengthが5を超えていたら、これ以上追加できませんと言うメッセージを表示「mainメソッドで最初に6冊分入力しているのに要素数が足りなすぎます。main()メソッドのendが入力されるまでと言うのは何の意味があるのでしょう」 (4)iLengthが5を超えていなかったら配列aBookにBook型のオブジェクトbook を追加しiLengthに1を加える (5)show()メソッドではaBookの全ての要素について本の書名、作者名を表示 --------------------------------------------------------------- UML図 Book --------- -title:String -author:String ------------ +setTitle(title:string):void +setAuthor(author:string):void +show():void --------------- Lendmanager -------------- -aBook:Book[] -iLength:int -------------- +Lendmanager() +add(book:Book):void +show():void 以上ですよろしくお願いします。

    • ベストアンサー
    • Java
  • プログラミングお願いします(JAVA)

    クラスCalcに、次の5つのメソッドを作成しなさい。メインメソッドでオブジェクトを生成し、メソッドを呼び出して、実行しなさい。 二つの整数を引数にもち、その和を戻り値とする wa (メソッド名はwaであることに注意!以下同様。) 二つの整数を引数にもち、その差を戻り値とする sa 二つの整数を引数にもち、その積を戻り値とする kake 二つの整数を引数にもち、その大きい方を戻り値とする max 二つの整数を引数にもち、その小さい方を戻り値とする min した自分が実行したプログラムです。ここまでしかわからないので簡単にお願いします class Calc { int wa; int sa; int kake; int max; int min; int num; int num1; int getWa() { System.out.println("和を調べました"); return num+num1; } int getSa() { System.out.println("差を調べました"); return sa; } int getKake() { System.out.println("積を調べました"); return kake; } int geMax() { System.out.println("大きいほうを調べました"); return max; } int getMin() { System.out.println("小さいほうを調べました"); return min; } void setwasakakemaxmin(int w,int s ,int k,int ma,int mi) { wa=w; sa=s; kake =k; max=ma; min=mi; System.out.println("和を"+wa+"差を"+sa+"積を"+kake+"大きいほうを"+max+"小さいほうを"+min+"にしました"); } } class Sample3 { public static void main(String[] args)throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Calc car1=new Calc(); String str=br.readLine(); int num = Integer.parseInt(str); String str1=br.readLine(); int num1 = Integer.parseInt(str1); int wa=num+num1; int wa =car1.getWa(); Calc car1 =new Calc(); car1.setWaSaKakeMaxMin(1,2); int wa =car1.getWa(); int sa =car1.getSa(); int kake=car1.getKake(); int max =car1.getMax(); int min=car1.getMin(); System.out.println("Birthdayを調べたところ"); System.out.println("和は"+wa+"差"+sa+"積は"+kake+"大きいほうは"+max+"小さいほうは"+min+"でした"); } }