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

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

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

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

Q&A

2回答

925閲覧

ローカル変数を別メソッドで使用

icebreak

総合スコア4

Java

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

0グッド

1クリップ

投稿2022/07/31 05:09

編集2022/07/31 07:59

前提

クラスの先頭で配列
static int count = 0;
Position[] arrayposition = new Position[count +1];
を宣言し、それをメソッドaddPosition()で配列の値を定義しました。
その上で同じクラス内の別のメソッドfindPositionでその値を利用したいのですが、どのようにすれば利用することが可能でしょうか。

<エラーメッセージ>
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at Portfolio.addPosition(Issue4.java:223)
at Issue100.main(Issue4.java:32)

実際に書いたコードはこちらです。
また全部のコードも記載致します。

java

1コード 2class Portfolio extends Position{ 3 static int count = 0; 4 Position[] arrayposition = new Position[count +1]; 5 6 public void addPosition(Position position){ 7 if(count == 0){ 8 arrayposition[count] = position; 9 count++; 10 } 11 else if(count > 0){ 12 for(int i = 0; count > i;i++){ 13 boolean bool = position.equals(arrayposition[i]); 14 if(bool == true){ 15 amount++; 16 break; 17 } 18 else if(bool == false){ 19 if(i == count -1){ 20 arrayposition[count] = position; 21 count++; 22 } 23 } 24 } 25 } 26 } 27 28 public Position findPosition(Issue4 issue){ 29 boolean bool2; 30 for(int i = 0;i < count + 1;i++){ 31 bool2 = issue.equals(arrayposition[i]); 32 if(bool2 == true){ 33 return arrayposition[i]; 34 } 35 else{ 36 } 37 } 38 return null; 39 } 40 41 @Override 42 public int hashCode(){ 43 int result = 1; 44 result = 31*result + ((issue == null)? 0:issue.hashCode()); 45 return result; 46 } 47 @Override 48 public boolean equals(Object obj){ 49 if(this == obj){ 50 return true; 51 } 52 if(obj == null){ 53 return false; 54 } 55 if(getClass() != obj.getClass()){ 56 return false; 57 } 58 Portfolio port = (Portfolio)obj; 59 60 if(!issue.equals(port.issue)){ 61 return false; 62 } 63 return true; 64 } 65} 66java 67コード全体 68import java.io.*; 69 70class Issue100{ 71 public static void main(String[] args){ 72 73 Issue4 issue1 = new Issue4("1111","AAAA"); 74 Issue4 issue2 = new Issue4("2222","BBBB"); 75 Issue4 issue3 = new Issue4("3333","CCCC"); 76 Issue4 issue4 = new Issue4("4444","DDDD"); 77 Issue4 issue5 = new Issue4("5555","EEEE"); 78 Issue4 issue6 = new Issue4("6666","FFFF"); 79 Issue4 issue7 = new Issue4("1111","AAAA"); 80 81 Stock stock1 = new Stock("1111","AAAA",Market.TSE); 82 Stock stock2 = new Stock("2222","BBBB",Market.OSE); 83 Stock stock3 = new Stock("3333","CCCC",Market.NSE); 84 Bond bon1 = new Bond("1111","AAAA",20001111,1.0); 85 Bond bon2 = new Bond("2222","BBBB",20002222,1.5); 86 Bond bon3 = new Bond("3333","CCCC",20003333,2.0); 87 88 89 Position pos1 = new Position(issue1,0); 90 Position pos2 = new Position(issue2,0); 91 Position pos3 = new Position(issue3,0); 92 Position pos4 = new Position(issue4,0); 93 Position pos5 = new Position(issue5,0); 94 Position pos6 = new Position(issue6,0); 95 96 Portfolio por = new Portfolio(); 97 98 por.addPosition(pos1); 99 por.addPosition(pos2); 100 /* 101 Position a = por.findPosition(issue7); 102 System.out.println(a); 103 */ 104 } 105} 106class Issue4{ 107 108 protected String code; 109 protected String name; 110 111 public Issue4(String code,String name)throws IllegalArgumentException{ 112 if(code == null || name == null){ 113 IllegalArgumentException e = new IllegalArgumentException(); 114 throw e; 115 } 116 else{ 117 this.code = code; 118 this.name = name; 119 } 120 } 121 public String getCode(){ 122 return this.code; 123 } 124 public String getName(){ 125 return this.name; 126 } 127} 128 129class Bond extends Issue4{ 130 131 private int maturity; 132 private double coupon; 133 134 public Bond(String code,String name,int maturity,double coupon)throws IllegalArgumentException{ 135 super(code,name); 136 if(maturity <= 20000101 || maturity >= 29991231){ 137 IllegalArgumentException e = new IllegalArgumentException(); 138 throw e; 139 } 140 else{ 141 if(coupon < 0){ 142 IllegalArgumentException e = new IllegalArgumentException(); 143 throw e; 144 } 145 else{ 146 this.maturity = maturity; 147 this.coupon = coupon; 148 } 149 } 150 } 151 public int getMaturity(){ 152 return this.maturity; 153 } 154 public double getCoupon(){ 155 return this.coupon; 156 } 157 public BondType getBondType(){ 158 if(coupon == 0){ 159 BondType bondtype = BondType.ZERO_COUPON_BOND; 160 return bondtype; 161 } 162 else{ 163 BondType bondtype = BondType.COUPON_BOND; 164 return bondtype; 165 } 166 } 167 @Override 168 public String toString(){ 169 return "コード :" + code + "\n" + "名称 :" + name + "\n" + "償還月日 :"+ this.maturity + 170 "\n" + "クーポンレート :" + this.coupon ; 171 } 172 @Override 173 public int hashCode(){ 174 double result = 1; 175 result = 31*result + ((code == null)? 0:code.hashCode()); 176 result = 31*result + this.maturity; 177 result = 31*result + this.coupon; 178 int result2 = (int)result; 179 return result2; 180 } 181 @Override 182 public boolean equals(Object obj){ 183 if(this == obj){ 184 return true; 185 } 186 if(obj == null){ 187 return false; 188 } 189 if(getClass() != obj.getClass()){ 190 return false; 191 } 192 Bond bond = (Bond)obj; 193 194 if(!code.equals(bond.code)){ 195 return false; 196 } 197 if(maturity != bond.maturity){ 198 return false; 199 } 200 if(coupon != bond.coupon){ 201 return false; 202 } 203 return true; 204 } 205} 206class Stock extends Issue4{ 207 private Market market; 208 209 public Stock(String code,String name,Market market){ 210 super(code,name); 211 this.market = market; 212 } 213 public Market getMarket(){ 214 return this.market; 215 } 216 @Override 217 public String toString(){ 218 return "コード :" + code + "\n" + "名称 :" + name + "\n" + "上場市場 :"+ this.market; 219 } 220 @Override 221 public int hashCode(){ 222 int result = 1; 223 result = 31*result + ((code == null)? 0:code.hashCode()); 224 result = 31*result + ((this.market == null)? 0:market.hashCode()); 225 return result; 226 } 227 @Override 228 public boolean equals(Object obj){ 229 if(this == obj){ 230 return true; 231 } 232 if(obj == null){ 233 return false; 234 } 235 if(getClass() != obj.getClass()){ 236 return false; 237 } 238 Stock stock = (Stock)obj; 239 240 if(!code.equals(stock.code)){ 241 return false; 242 } 243 if(market != stock.market){ 244 return false; 245 } 246 return true; 247 } 248} 249class Position{ 250 251 protected Issue4 issue; 252 protected double amount; 253 254 public Position(){ 255 } 256 public Position(Issue4 issue,double amount){ 257 this.issue = issue; 258 this.amount = amount; 259 } 260 public Issue4 getIssue4(){ 261 return this.issue; 262 } 263 public double getAmount(){ 264 return this.amount; 265 } 266 public void setIssue4(Issue4 issue){ 267 this.issue = issue; 268 } 269 public void setAmount(double amount){ 270 this.amount = amount; 271 } 272} 273class Portfolio extends Position{ 274 static int count = 0; 275 Position[] arrayposition = new Position[count +1]; 276 277 public void addPosition(Position position){ 278 if(count == 0){ 279 arrayposition[count] = position; 280 count++; 281 } 282 else if(count > 0){ 283 for(int i = 0; count > i;i++){ 284 boolean bool = position.equals(arrayposition[i]); 285 if(bool == true){ 286 amount++; 287 break; 288 } 289 else if(bool == false){ 290 if(i == count -1){ 291 arrayposition[count] = position; 292 count++; 293 } 294 } 295 } 296 } 297 } 298/* 299 public Position findPosition(Issue4 issue){ 300 boolean bool2; 301 for(int i = 0;i < count + 1;i++){ 302 bool2 = issue.equals(arrayposition[i]); 303 if(bool2 == true){ 304 return arrayposition[i]; 305 } 306 else{ 307 } 308 } 309 return null; 310 } 311 */ 312 @Override 313 public int hashCode(){ 314 int result = 1; 315 result = 31*result + ((issue == null)? 0:issue.hashCode()); 316 return result; 317 } 318 @Override 319 public boolean equals(Object obj){ 320 if(this == obj){ 321 return true; 322 } 323 if(obj == null){ 324 return false; 325 } 326 if(getClass() != obj.getClass()){ 327 return false; 328 } 329 Portfolio port = (Portfolio)obj; 330 331 if(!issue.equals(port.issue)){ 332 return false; 333 } 334 return true; 335 } 336}

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

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

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

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

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

jimbe

2022/07/31 06:42

コードのご提示にはマークダウン記法を用いてください。
javahack

2022/07/31 07:05 編集

メソッドだけでなく、クラス全体をマークダウン記法で囲ってほしい。
BeatStar

2022/07/31 07:53 編集

エラーメッセージは省略せずに提示してください。お願いします。 エラーメッセージは「コンパイラ等からのメッセージ」です。
guest

回答2

0

また全部のコードも記載致します。

全部ではないようです。Market.TSE などが未定義シンボルです。

Java

1 static int count = 0; 2 Position[] arrayposition = new Position[count +1];

これでは arrayposition.length が 1 で、arrayposition[0] しか参照できません。
count++; を実行しても配列の要素数が勝手に増えることはありません。
最初に要素数を 100 にしてみると、次のようになります。

Java

1import java.io.*; 2 3enum Market { TSE, OSE, NSE }; // ★ 4enum BondType { ZERO_COUPON_BOND, COUPON_BOND }; // ★ 5 6class Issue100{ 7 public static void main(String[] args){ 8 9 Issue4 issue1 = new Issue4("1111","AAAA"); 10 Issue4 issue2 = new Issue4("2222","BBBB"); 11 Issue4 issue3 = new Issue4("3333","CCCC"); 12 Issue4 issue4 = new Issue4("4444","DDDD"); 13 Issue4 issue5 = new Issue4("5555","EEEE"); 14 Issue4 issue6 = new Issue4("6666","FFFF"); 15 Issue4 issue7 = new Issue4("1111","AAAA"); 16 17 Stock stock1 = new Stock("1111","AAAA",Market.TSE); 18 Stock stock2 = new Stock("2222","BBBB",Market.OSE); 19 Stock stock3 = new Stock("3333","CCCC",Market.NSE); 20 Bond bon1 = new Bond("1111","AAAA",20001111,1.0); 21 Bond bon2 = new Bond("2222","BBBB",20002222,1.5); 22 Bond bon3 = new Bond("3333","CCCC",20003333,2.0); 23 24 25 Position pos1 = new Position(issue1,0); 26 Position pos2 = new Position(issue2,0); 27 Position pos3 = new Position(issue3,0); 28 Position pos4 = new Position(issue4,0); 29 Position pos5 = new Position(issue5,0); 30 Position pos6 = new Position(issue6,0); 31 32 Portfolio por = new Portfolio(); 33 34 por.addPosition(pos1); 35 por.addPosition(pos2); 36 37 Position a = por.findPosition(issue7); // ★ 38 System.out.println(a); // ★ 39 Issue4 i4 = a.getIssue4(); // ★ 40 System.out.println(i4.getCode() + ", " + i4.getName()); // ★ 41 } 42} 43class Issue4{ 44 45 protected String code; 46 protected String name; 47 48 public Issue4(String code,String name)throws IllegalArgumentException{ 49 if(code == null || name == null){ 50 IllegalArgumentException e = new IllegalArgumentException(); 51 throw e; 52 } 53 else{ 54 this.code = code; 55 this.name = name; 56 } 57 } 58 public String getCode(){ 59 return this.code; 60 } 61 public String getName(){ 62 return this.name; 63 } 64} 65 66class Bond extends Issue4{ 67 68 private int maturity; 69 private double coupon; 70 71 public Bond(String code,String name,int maturity,double coupon)throws IllegalArgumentException{ 72 super(code,name); 73 if(maturity <= 20000101 || maturity >= 29991231){ 74 IllegalArgumentException e = new IllegalArgumentException(); 75 throw e; 76 } 77 else{ 78 if(coupon < 0){ 79 IllegalArgumentException e = new IllegalArgumentException(); 80 throw e; 81 } 82 else{ 83 this.maturity = maturity; 84 this.coupon = coupon; 85 } 86 } 87 } 88 public int getMaturity(){ 89 return this.maturity; 90 } 91 public double getCoupon(){ 92 return this.coupon; 93 } 94 public BondType getBondType(){ 95 if(coupon == 0){ 96 BondType bondtype = BondType.ZERO_COUPON_BOND; 97 return bondtype; 98 } 99 else{ 100 BondType bondtype = BondType.COUPON_BOND; 101 return bondtype; 102 } 103 } 104 @Override 105 public String toString(){ 106 return "コード :" + code + "\n" + "名称 :" + name + "\n" + "償還月日 :"+ this.maturity + 107 "\n" + "クーポンレート :" + this.coupon ; 108 } 109 @Override 110 public int hashCode(){ 111 double result = 1; 112 result = 31*result + ((code == null)? 0:code.hashCode()); 113 result = 31*result + this.maturity; 114 result = 31*result + this.coupon; 115 int result2 = (int)result; 116 return result2; 117 } 118 @Override 119 public boolean equals(Object obj){ 120 if(this == obj){ 121 return true; 122 } 123 if(obj == null){ 124 return false; 125 } 126 if(getClass() != obj.getClass()){ 127 return false; 128 } 129 Bond bond = (Bond)obj; 130 131 if(!code.equals(bond.code)){ 132 return false; 133 } 134 if(maturity != bond.maturity){ 135 return false; 136 } 137 if(coupon != bond.coupon){ 138 return false; 139 } 140 return true; 141 } 142} 143class Stock extends Issue4{ 144 private Market market; 145 146 public Stock(String code,String name,Market market){ 147 super(code,name); 148 this.market = market; 149 } 150 public Market getMarket(){ 151 return this.market; 152 } 153 @Override 154 public String toString(){ 155 return "コード :" + code + "\n" + "名称 :" + name + "\n" + "上場市場 :"+ this.market; 156 } 157 @Override 158 public int hashCode(){ 159 int result = 1; 160 result = 31*result + ((code == null)? 0:code.hashCode()); 161 result = 31*result + ((this.market == null)? 0:market.hashCode()); 162 return result; 163 } 164 @Override 165 public boolean equals(Object obj){ 166 if(this == obj){ 167 return true; 168 } 169 if(obj == null){ 170 return false; 171 } 172 if(getClass() != obj.getClass()){ 173 return false; 174 } 175 Stock stock = (Stock)obj; 176 177 if(!code.equals(stock.code)){ 178 return false; 179 } 180 if(market != stock.market){ 181 return false; 182 } 183 return true; 184 } 185} 186class Position{ 187 188 protected Issue4 issue; 189 protected double amount; 190 191 public Position(){ 192 } 193 public Position(Issue4 issue,double amount){ 194 this.issue = issue; 195 this.amount = amount; 196 } 197 public Issue4 getIssue4(){ 198 return this.issue; 199 } 200 public double getAmount(){ 201 return this.amount; 202 } 203 public void setIssue4(Issue4 issue){ 204 this.issue = issue; 205 } 206 public void setAmount(double amount){ 207 this.amount = amount; 208 } 209} 210class Portfolio extends Position{ 211 static int count = 0; 212 Position[] arrayposition = new Position[100]; // ★ 213 214 public void addPosition(Position position){ 215 if(count == 0){ 216 arrayposition[count] = position; 217 count++; 218 } 219 else if(count > 0){ 220 for(int i = 0; count > i;i++){ 221 boolean bool = position.equals(arrayposition[i]); 222 if(bool == true){ 223 amount++; 224 break; 225 } 226 else if(bool == false){ 227 if(i == count -1){ 228 arrayposition[count] = position; 229 count++; 230 } 231 } 232 } 233 } 234 } 235 236 public Position findPosition(Issue4 issue){ 237 boolean bool2; 238 for(int i = 0;i < count + 1;i++){ 239 bool2 = issue.getCode().equals(arrayposition[i].getIssue4().getCode()); // ★ 240 if(bool2 == true){ 241 return arrayposition[i]; 242 } 243 else{ 244 } 245 } 246 return null; 247 } 248 249 @Override 250 public int hashCode(){ 251 int result = 1; 252 result = 31*result + ((issue == null)? 0:issue.hashCode()); 253 return result; 254 } 255 @Override 256 public boolean equals(Object obj){ 257 if(this == obj){ 258 return true; 259 } 260 if(obj == null){ 261 return false; 262 } 263 if(getClass() != obj.getClass()){ 264 return false; 265 } 266 Portfolio port = (Portfolio)obj; 267 268 if(!issue.equals(port.issue)){ 269 return false; 270 } 271 return true; 272 } 273}

findPositionメソッドも変更が必要ですが、これでいいのでしょうか?

投稿2022/07/31 16:58

kazuma-s

総合スコア8224

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

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

icebreak

2022/08/01 02:31

恐らくfindPosition()メソッドも変更が必要だとは思うのですが、どのように変更すれば良いのか見当がつかない状態です。
kazuma-s

2022/08/01 04:43

code が一致すれば見つかったとしていいんですか? code と name の両方が一致しないとだめなんですか? for文の i < count + 1 は間違いで、i < count でしょう。
icebreak

2022/08/04 05:14

返信遅くなり、申し訳ございません。 基本的にissueが同じ場合一致したと判定するため、codeとnameの両方が一致する必要があります。 また、最初の質問に戻るのですが、あらかじめ配列の要素数を100と定義するやり方以外にメソッドが呼び出された回数分だけ配列の要素数を作成することは出来ないのでしょうか。
guest

0

そのクラス内であれば、arraypositionはそのまま使えます

基本的に、定義された変数は定義されたブロック{}内で有効です

投稿2022/07/31 05:14

y_waiwai

総合スコア87747

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

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

icebreak

2022/07/31 05:33

addPosition()メソッドで配列の値を定義するのですが、そこで定義した値はfindPosition()メソッドで使用可能でしょうか。もし使えない場合はどうすれば利用できるようになるのかご教授いただければ幸いです。
y_waiwai

2022/07/31 06:16 編集

arraypositionはそれらの関数の外で定義されてるんで、どちらの関数からでも使えます しかし、関数の実行の順番には気をつけよう で、それでなんか問題はあるの?
icebreak

2022/07/31 07:15

このコードのままだと実行時に  Index 1 out of bounds for length 1 というエラーが発生するため、恐らく配列が存在しないことになっているのではないかと考えています。
y_waiwai

2022/07/31 07:53

それは配列のサイズが1しかないのに、1のインデックスでは範囲を超えてる、というエラーです。 存在しないというエラーではないです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問