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

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

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

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

Q&A

解決済

5回答

4224閲覧

実行結果がnullになる。

zaki777oka

総合スコア31

Java

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

0グッド

0クリップ

投稿2018/08/10 02:48

Detail.javaが、

package jp.co.bbreak.sokusen._2._1;

import java.math.BigDecimal;
public class Detail{private String itemName;
private BigDecimal amount;
public String getItemName(){return itemName;}
public void setItemName(String itemName)
{this.itemName = itemName;}
public BigDecimal getAmount(){
return amount;}
public void setAmount(BigDecimal amount){
this.amount = amount;
}

public Object お米5kg() {
// TODO 自動生成されたメソッド・スタブ
return null;

}
}

で、
package jp.co.bbreak.sokusen._2._1;

import java.math.BigDecimal;

public class PrintReceipt1 {
public static void main(String[] args){
//明細データの作成
Detail detail = new Detail();
detail.setItemName("お米5kg");
detail.setAmount(new BigDecimal(1980));

//明細データの加工 StringBuilder sb = new StringBuilder(); sb.append(detail.お米5kg()); sb.append(" "); sb.append(1980); sb.append("円"); //明細の出力 System.out.println(sb.toString()); }

}

これを実行すると、
null 1980円
となります。
ちゃんとした実行結果になる方法を教えてください。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

全体的に書き換えてみました。
Detail クラスのメソッドの整理をします。
それをつかって お米5kgの 要素の作成と表示をします。
また、Integer より大きい数を扱えているかも試しています。

Detail

java

1package jp.co.bbreak.sokusen._2._1; 2 3import java.math.BigDecimal; 4 5public class Detail { 6 private String itemName; 7 private BigDecimal amount; // 円 8 9 public Detail(String itemName, BigDecimal amount) { 10 this.itemName = itemName; 11 this.amount = amount; 12 } 13 public Detail(String itemName) { 14 this(itemName, BigDecimal.ZERO); 15 } 16 17 public void setItemName(String itemName) { 18 this.itemName = itemName; 19 } 20 public String getItemName() { 21 return itemName; 22 } 23 public void setAmount(BigDecimal amount) { 24 this.amount = amount; 25 } 26 public BigDecimal getAmount() { 27 return amount; 28 } 29 30 @Override 31 public String toString() { 32 return String.format("%s\t%s円", itemName, amount.toString()); 33 } 34}

PrintReceipt1.java

java

1package jp.co.bbreak.sokusen._2._1; 2 3import java.math.BigDecimal; 4 5public class PrintReceipt1 { 6 public static void main(String[] args) { 7 // 明細データの作成 8 Detail detail = new Detail("お米5kg", new BigDecimal(1980)); 9 // 明細の出力 10 System.out.println(detail); 11 12 // 詳細の加工 13 detail.setItemName("お米10kg"); 14 detail.setAmount(new BigDecimal(2500)); 15 // 明細の出力 16 System.out.println(detail); 17 18 detail = new Detail("お米2kg"); 19 System.out.println(detail); 20 21 // detail.setAmount(new BigDecimal(900)); 22 BigDecimal v = new BigDecimal(Integer.MAX_VALUE); 23 detail.setAmount(v.multiply(v).multiply(v)); 24 System.out.println(detail); 25 System.out.println(String.format("名前: %s, 値段: %s円", detail.getItemName(), detail.getAmount())); 26 } 27}

実行例
イメージ説明

メモ:
getAmount()の上のコードでの実装はあまり良くないです。理由と修正方法を考えてみてください。

投稿2018/08/10 23:46

編集2018/08/10 23:49
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

Java

1//明細データの加工 2StringBuilder sb = new StringBuilder(); 3// sb.append(detail.お米5kg()); 以下に変更する 4sb.append(detail.getItemName()); 5sb.append(" "); 6sb.append(1980); 7sb.append("円");

投稿2018/08/10 05:05

root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

何を出したいのか分かりませんが、detail.getItemName()を使えばいいんじゃないですか?

投稿2018/08/10 03:40

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そりゃ、「nullを返す」って言ってるメソッド使ってるんだからnullが帰ってくるに決まってるじゃないですか。
そのメソッドの返り値を返したいものに変えれば解決しますよ。

投稿2018/08/10 02:59

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

detail.お米5kg()がnullを返す作りになっているので、
書かれた通りプログラムは動いていますよ。(=ちゃんとした実行結果になっています)

まあ、下記メソッドを直せば望む結果になるのではないでしょうか

Java

1public Object お米5kg() { 2 // TODO 自動生成されたメソッド・スタブ 3 return null; 4}

投稿2018/08/10 02:56

terrace

総合スコア249

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問