質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

受付中

Java カプセル化応用問題

parabellum
parabellum

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

4回答

0リアクション

0クリップ

681閲覧

投稿2022/07/25 02:55

編集2022/07/26 01:19

文房具クラスを追加する
StationaryShop を実行すると実行結果の通りになるように、Stationary クラスを追加しなさい

また、追加にともない Amount クラスにも必要な修正を行うこと

実行結果
三菱ジェットストリーム が 3 本あります
MONO消しゴム が 2 本あります
金額は 562 円です

public class StationaryShop2 { public static void main(String[] args) { Amount myCart = new Amount(0); Stationary ballPen = new Stationary( "三菱ジェットストリーム", new Amount(120), 3); Stationary eraser = new Stationary( "MONO消しゴム", new Amount(80), 2); myCart = myCart.add(ballPen.calcTotalAmount()); myCart = myCart.add(eraser.calcTotalAmount()); myCart = myCart.addTax(); myCart.showValue(); } }

この続きのコードを記述せよ

という課題に取り組んでいるのですが、上手く実行結果が出ず、現在手詰まり状態です。

僕自身では


public class StationaryShop2 { public static void main(String[] args) { Amount myCart = new Amount(0); Stationary ballPen = new Stationary("三菱ジェットストリーム", new Amount(120), 3); Stationary eraser = new Stationary("MONO消しゴム", new Amount(80), 2); myCart = myCart.add(ballPen.calcTotalAmount()); myCart = myCart.add(eraser.calcTotalAmount()); myCart = myCart.addTax(); myCart.showValue(); } } final class Stationary { private String name; private int quantity; public Stationary(String name , Amount value , int quantity) { this.name = name; this.quantity = quantity; } public Stationary calcTotalAmount() { return new Stationary(name, quantity); } }   final class Amount { private final int value; public Amount(int value) { this.value = value; } public Amount add(Amount augend) { return new Amount(value + augend.value); } public Amount addTax() { return new Amount((int)(value * 1.08)); } public void showValue() { System.out.println(name + " が " + quantity + " 本あります"); System.out.println("金額は " + value + " 円です"); } }

というところまではいったのですが、nameとquantityをどう返せばいいのか、どう出力すればいいのかわからず、現在進むことができずに詰んでおります。
僕の勉強不足が原因であり、厳しいお言葉も覚悟してますが、よければ教えていただけると幸いです…

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/07/25 03:07依頼された後にこの質問は修正されています

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

dodox86

2022/07/25 03:26

なぜ、各所でfinalを付けているのでしょうか。また、先のご質問 [Java カプセル化の問題]https://teratail.com/questions/9hb0ldg0g7qvjz でいただいていた各回答の内容は理解し、消化できていますか?
RiaFeed

2022/07/25 03:36

問題自体が酷い…
BeatStar

2022/07/25 09:17

質問は編集できるので編集してください。お願いします。
parabellum

2022/07/26 01:20

すいません修正しました このサイトにまだ慣れてないのでご容赦ください
BeatStar

2022/07/26 03:16

この本来の問題はどこまで提示されていたのでしょうか? 例えば「mainメソッドしか提示されていないけど、それ以外は自分の力で組んだ」のか、「今提示されているものが問題文の全てで、自分では何も考えていない」のか、「(一つ前のやつで)自分で調べてみたが何もわからなかった」なのか… 二つ目や三つ目なら問題が悪すぎる、一つ目なら「ちょっと惜しい」かなと。
parabellum

2022/07/26 04:26

提示されていたのは、”問題文”、”実行結果の回答”、”メインメソッド”のみですね…今回の問題はひとつ前の問題の発展型で、Amountクラスはその問題で書いたものでした。そして今回はメインメソッドが前回の問題から少し追記され、Stationaryの追加とAmountの改修、というのが今回の問題です…
BeatStar

2022/07/26 05:05

忘れていました。 Amountの本来のコードはありますか? そのコードから手をつけたのが質問にあるAmountでしょうか? それともそのまま?
parabellum

2022/07/26 05:10

’’’ final class Amount { private final int value; Amount(int value) { this.value = value; } Amount add(Amount augend) { return new Amount(value + augend.value); } Amount addTax() { return new Amount((int)(value * 1.08)); } void showValue() { System.out.println("金額は " + value + " 円です"); } } ’’’ 前回の問題で書いたAmountはこうなってます。
BeatStar

2022/07/26 05:34

つまり、showValueメソッドだけ違うってことですね。
parabellum

2022/07/26 05:36

あ、ごめんなさい。一つ課題のメインメソッドはこうなってます。 public class StationaryShop { public static void main(String[] args) { Amount myCart = new Amount(0); Amount ballPen = new Amount(120); Amount eraser = new Amount(80); myCart = myCart.add(ballPen); myCart = myCart.add(eraser); myCart = myCart.addTax(); myCart.showValue(); } }

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。