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

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

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

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

Q&A

解決済

1回答

602閲覧

戻り値positionの出力

oimo0505

総合スコア22

Java

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

0グッド

0クリップ

投稿2022/08/27 14:20

編集2022/08/27 14:22

前提

 PortfolioクラスにaddPosition(),findPosition()メソッドを作成し、Portfolioクラスで作成した配列に複数のPositionを要素として持てるようにしたいと考えています。
またfindPosition()メソッドを利用して別パッケージPortfolioTestクラスにおいてissueが同じPosition戻り値として返すようにしています。
現在PortfolioTestクラスにおいてpositionに追加するまではしているのですが、findPosition()の戻り値positionの確認の仕方が分からないので教えて頂けないでしょうか。

補足:
コンストラクタはパッケージIssues内において以下のように作成しています。
public Stock(String code, String name, Market market)
public Bond (String code, String name, int maturity, double coupon)
public Position (Issue issue, double amount,)
public Issue (String code, String name)
PortfolioTestファイルはパッケージtest11に属しています。
Issueは抽象クラスでBond、StockクラスはIssueのサブクラスになっています。
add()メソッドは同じIssueのPositionが存在している場合それにamountを加算するようしています。

実現したいこと

  • findPosition()の戻り値positionの出力

発生している問題・エラーメッセージ

出力結果が以下のようになる。
Issues.Position@14dad5dc

該当のソースコード

PortfolioTest.java

Java

1package test11; 2 3import Issues.Market; 4import Issues.Stock; 5 6public class PortfolioTest { 7 public static void main (String [] args) { 8 9 //Stockインスタンス 10 Issues.Stock stock1 = new Issues.Stock("1111","AAAA", Issues.Market.TSE); 11 12 Issues.Stock stock2 = new Issues.Stock("2222", "BBBB", Issues.Market.TSE); 13 14 Issues.Stock stock3 = new Issues.Stock("3333", "CCCC", Issues.Market.TSE); 15 16 //Bondインスタンス 17 Issues.Bond bond1 = new Issues.Bond("1111","AAAA", 20290920, 1.5); 18 19 Issues.Bond bond2 = new Issues.Bond("2222", "BBBB", 20250917, 0.15); 20 21 Issues.Bond bond3 = new Issues.Bond("3333", "CCCC", 20250613, 0.72); 22 23 24 //Positionインスタンス 25 Issues.Position positionStock1 = new Issues.Position(stock1, 2.0); 26 27 Issues.Position positionStock2 = new Issues.Position(stock2, 2.0); 28 29 Issues.Position positionStock3 = new Issues.Position(stock3, 2.0); 30 31 Issues.Position positionBond1 = new Issues.Position(bond1, 2.0); 32 33 Issues.Position positionBond2 = new Issues.Position(bond2, 2.0); 34 35 Issues.Position positionBond3 = new Issues.Position(bond3, 2.0); 36 37 //Portfolioインスタンス 38 Issues.Portfolio portfolio = new Issues.Portfolio(); 39 40 //add() 41 portfolio.addPosition(positionStock1); 42 portfolio.addPosition(positionStock2); 43 portfolio.addPosition(positionStock3); 44 portfolio.addPosition(positionBond1); 45 portfolio.addPosition(positionBond2); 46 portfolio.addPosition(positionBond3); 47 48 //同じStockオブジェクト 49 Issues.Stock sameStock1 = new Issues.Stock("1111","AAAA", Issues.Market.TSE); 50 51 Issues.Issue stockIssue = new Stock("1111","AAAA", Market.TSE);; 52 Issues.Position samePositionStock = new Issues.Position(stockIssue, 2.0); 53 portfolio.findPosition(stockIssue); 54 55 56 System.out.println(portfolio.findPosition(stockIssue)); 57 } 58} 59

Portfolio.java

Java

1package Issues; 2 3import java.util.*; 4 5public class Portfolio { 6 Position [] portfolio = new Position[0]; 7 public void addPosition(Position position) { 8 Position samePosition = findPosition(position.getIssue()); 9 if (samePosition == null) { 10 Position [] newPortfolio = new Position [portfolio.length + 1]; 11 System.arraycopy(portfolio, 0, newPortfolio, 0, portfolio.length); 12 newPortfolio[portfolio.length] = position; 13 this.portfolio = newPortfolio; 14 } else { 15 int num = 0; 16 do { 17 num++; 18 } while (portfolio[num].getIssue().equals(position.getIssue()) ); 19 double sumAmount = samePosition.getAmount() + position.getAmount(); 20 portfolio[num].setAmount(sumAmount); 21 } 22 } 23 24 public Position findPosition(Issues.Issue issue) { 25 for (Position position : portfolio) { 26 if (position.getIssue().equals(issue) ) { 27 return position; 28 } 29 } 30 return null; 31 } 32 33}

Position.java

Java

1package Issues; 2 3public class Position { 4 5 private Issue issue; 6 private double amount; 7 8 //コンストラクタ 9 public Position (Issue issue, double amount) { 10 this.issue = issue; 11 this.amount = amount; 12 } 13 14 //getter 15 public Issue getIssue() { 16 return this.issue; 17 } 18 public double getAmount() { 19 return this.amount; 20 } 21 22 //setter 23 public void setAmount(double amount) { 24 this.amount = amount; 25 } 26 public void setIssue(Issue issue) { 27 this.issue = issue; 28 } 29 30 31} 32 33

試したこと

stockをIssue型に直して出力したところ、Issues.Position@14dad5dcと出力されstockIssueのPositionが出力されなかった。

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

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

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

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

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

guest

回答1

0

ベストアンサー

オブジェクトのデバッグ文字列化は Object.toString メソッドを override してください。

投稿2022/08/27 14:37

編集2022/08/27 14:38
jimbe

総合スコア12477

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

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

oimo0505

2022/08/27 15:07 編集

jimbe様 回答ありがとうございます。 PositionクラスにてtoStringしたところ出力されました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.53%

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

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

質問する

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

Java

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