ここから本文です

java問題を教えてください。ありがとうございます。

phu********さん

2019/5/2321:00:04

java問題を教えてください。ありがとうございます。

以下のJava のプログラム SatouMizuMaze.java の関数 main に書き加えることにより、
「水の質量が 100、温度が 20、砂糖の質量が 10」
「水の質量が 99 、温度が 20、砂糖の質量が 11」
...
「水の質量が 61 、温度が 20、砂糖の質量が 49」
「水の質量が 60 、温度が 20、砂糖の質量が 50」

の砂糖水を混ぜたものの質量と温度と濃度を表示するようにせよ。
(砂糖水は全部で41個ある)
(本プログラムは、そのままだとコンパイルできないことに注意)

実行結果の表示の通り、半角数字で答えよ。
satoumizu: mizu_shitsuryou = 回答
, ondo = 20.0, satou_shitsuryou = 回答
, noudo = 回答%

ソースコードは必ず、
SatouMizuMaze.java という名前で保存すること。

/* **************************************************************** */

public class SatouMizuMaze {
public static void main(String[] args){

}
}

/* ビーカーに入った水のクラス */
class Mizu {
/* フィールド */
/* 質量と温度を保持する。 */
protected double mizu_shitsuryou;
protected double ondo;

/* コンストラクタ。
double型 s とdouble型 o を引数にとる。
質量が s で、温度が o であるような水を生成する。
*/
public Mizu(double s, double o){
mizu_shitsuryou = s;
ondo = o;
}

/* メソッド mazeru は、
クラス Mizu のオブジェクト変数 aite を引数にとる。
自身と aite を混ぜて作られる、新しい水を生成して返す。
*/
public Mizu mazeru(Mizu aite){
Mizu m;

m = new Mizu(mizu_shitsuryou + aite.mizu_shitsuryou,
(ondo * mizu_shitsuryou + aite.ondo * aite.mizu_shitsuryou)
/ (mizu_shitsuryou + aite.mizu_shitsuryou));

return m;
}

/* メソッド toString は、
自身の質量と温度を表す文字列を返す。
*/
public String toString(){
String str;

str =
"mizu: mizu_shitsuryou = " + String.valueOf(mizu_shitsuryou) +
", ondo = " + String.valueOf(ondo);

return str;
}
}

/* ビーカーに入った砂糖水のクラス */
class SatouMizu extends Mizu {
/* フィールド */
/* 砂糖の質量を保持する。 */
/* ここに記述がないが、
スーパークラスであるクラス Mizu の質量と温度も、
暗黙で存在することに注意。 */
protected double satou_shitsuryou;

/* コンストラクタ。
double型 s とdouble型 o とdouble型 st を引数にとる。
質量が s で、温度が o であるような水を生成し、
そこに質量 st の砂糖を溶かした砂糖水とする。
*/
public SatouMizu(double s, double o, double st){
/* まず、クラス Mizu のコンストラクタを呼び出して、 */
/* 質量が s で、温度が o であるような水を生成する。 */
super(s, o);

/* そして、砂糖の質量が st であるような砂糖水とする。 */
satou_shitsuryou = st;
}

/* メソッド mazeru は、
クラス SatouMizu のオブジェクト変数 aite を引数にとる。
自身と aite を混ぜて作られる、新しい砂糖水を生成して返す。
*/
public SatouMizu mazeru(SatouMizu aite){
SatouMizu sm;

sm = new SatouMizu(mizu_shitsuryou + aite.mizu_shitsuryou,
(ondo * mizu_shitsuryou + aite.ondo * aite.mizu_shitsuryou )
/ (mizu_shitsuryou + aite.mizu_shitsuryou),
satou_shitsuryou + aite.satou_shitsuryou);

return sm;
}

/* メソッド toString は、
自身の質量と温度と砂糖の質量、
および濃度を表す文字列を返す。
クラス Mizu のメソッド toString をオーバーライドする。
*/
public String toString(){
String str;

str =
"satoumizu: mizu_shitsuryou = " + String.valueOf(mizu_shitsuryou) +
", ondo = " + String.valueOf(ondo) +
", satou_shitsuryou = " + String.valueOf(satou_shitsuryou) +
", noudo = " + String.valueOf(100.0 * satou_shitsuryou /
(satou_shitsuryou + mizu_shitsuryou)) +
"%";

return str;
}
}

閲覧数:
67
回答数:
2

違反報告

ベストアンサーに選ばれた回答

den********さん

2019/5/2419:54:21

砂糖水クラスと必要なメソッドは既に記述されているので、題意に沿った形式で書いてみます。
答え方はいろいろあると思いますが、ここでは与えられた 41 個の砂糖水のうち一番上の

「水の質量が 100、温度が 20、砂糖の質量が 10」

である砂糖水に残りの 40 個を混ぜるという感じで答えます。

残りの砂糖水は最初の砂糖水から水の質量を 1 ずつ減らし、
砂糖の質量を 1 ずつ増やしたものなので、
for 文などで40回ループさせて濃度が違う砂糖水インスタンスを作成し、
最初の砂糖水に混ぜていけばいいでしょう。

あとは全て混ぜた砂糖水の質量と温度と濃度を SatouMizu.toString() を用いて表示させるだけです。
以下に自分のソースコードを書いておきますが、一度ご自身で書いてみることをおすすめします。



/* **************************************************************** */


public class SatouMizuMaze {
public static void main(String[] args){
// 一番上の砂糖水
double mizu_shitsuryou = 100.0;
double ondo = 20.0;
double satou_shitsuryou = 10.0;
SatouMizu satou_mizu = new SatouMizu(mizu_shitsuryou, ondo, satou_shitsuryou);

// 残る 40 個の砂糖水を混ぜる
for (int i = 1; i <= 40; i++){
// 混ぜる砂糖水インスタンスを作る
mizu_shitsuryou--;
satou_shitsuryou++;
SatouMizu aite = new SatouMizu(mizu_shitsuryou, ondo, satou_shitsuryou);

// 砂糖水を混ぜる
satou_mizu = satou_mizu.mazeru(aite);
}

// 結果を出力する
System.out.println(satou_mizu);
}
}

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

cd6********さん

2019/5/2419:54:00

こんな感じでしょうか。
https://pastebin.com/QURD9vvf
toString() を変更したので出力例と厳密に同じ形式じゃないと
ダメな場合は戻しましょう。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる