前提
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が出力されなかった。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/27 15:07 編集