teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

iをnに修正

2018/04/07 12:06

投稿

yukapome789
yukapome789

スコア361

answer CHANGED
@@ -13,7 +13,7 @@
13
13
  }
14
14
 
15
15
  public void judgeName() {
16
- for(int n=0; i<holdResult.allRowList.size(); i++) {
16
+ for(int n=0; n<holdResult.allRowList.size(); n++) {
17
17
  try {
18
18
  if (holdResult.allRowList.get(n) != null) { //下の行で.get(0)、.get(1)、get(2)した時にヌルポがでないようnullチェック
19
19
 

3

n++の処理が不要のため削除

2018/04/07 12:06

投稿

yukapome789
yukapome789

スコア361

answer CHANGED
@@ -35,8 +35,6 @@
35
35
  catch ( Exception e) {
36
36
  e.printStackTrace();
37
37
  }
38
-
39
- n++;
40
38
  }
41
39
  }
42
40
  }

2

コメントを追加

2018/04/07 12:00

投稿

yukapome789
yukapome789

スコア361

answer CHANGED
@@ -15,7 +15,7 @@
15
15
  public void judgeName() {
16
16
  for(int n=0; i<holdResult.allRowList.size(); i++) {
17
17
  try {
18
- if (holdResult.allRowList.get(n) != null) { //下の行で.get(0)した時にヌルポがでないようnullチェック
18
+ if (holdResult.allRowList.get(n) != null) { //下の行で.get(0)、.get(1)、get(2)した時にヌルポがでないようnullチェック
19
19
 
20
20
  if ( holdResult.allRowList.get( n).get( 0).equals( holdResult.getPlayerName())) {
21
21
  holdResult.setExistsTheName( true);

1

サンプルコードを追加

2018/04/07 08:31

投稿

yukapome789
yukapome789

スコア361

answer CHANGED
@@ -1,3 +1,43 @@
1
- `while(true)`を使ってループさせるのではなく、`for(int i=0; i<allRowList.size(); i++)`でループさせれば、allRowListの長さを超えずにループができますよ。
1
+ `while(true)`を使ってループさせるのではなく、`for(int n=0; n<allRowList.size(); n++)`でループさせれば、allRowListの長さを超えずにループができますよ。
2
2
 
3
- もし、`if (holdResult.allRowList.get( n) != null)`でループ回数を制限できていると思っていたら、それはあまりよくないです。このコードの場合、存在しない要素に対して`if (holdResult.allRowList.get( n) != null)`の処理を行ってしまっているために、OutOfIndex例外が出てしまっているのだと思いますよ。
3
+ もし、`if (holdResult.allRowList.get( n) != null)`でループ回数を制限できていると思っていたら、それはあまりよくないです。このコードの場合、存在しない要素に対して`if (holdResult.allRowList.get( n) != null)`の処理を行ってしまっているために、OutOfIndex例外が出てしまっているのだと思いますよ。
4
+
5
+ ```
6
+ package save.function;
7
+
8
+ public class JudgeName {
9
+ HoldResult holdResult;
10
+
11
+ public JudgeName( HoldResult holdResult) {
12
+ this.holdResult = holdResult;
13
+ }
14
+
15
+ public void judgeName() {
16
+ for(int n=0; i<holdResult.allRowList.size(); i++) {
17
+ try {
18
+ if (holdResult.allRowList.get(n) != null) { //下の行で.get(0)した時にヌルポがでないようnullチェック
19
+
20
+ if ( holdResult.allRowList.get( n).get( 0).equals( holdResult.getPlayerName())) {
21
+ holdResult.setExistsTheName( true);
22
+ holdResult.setTotalWin( Integer.parseInt( holdResult.allRowList.get( n).get( 1)) + holdResult.getTotalWin());
23
+ holdResult.setTotalLose( Integer.parseInt( holdResult.allRowList.get( n).get( 2)) + holdResult.getTotalLose());
24
+ }
25
+ else {
26
+ holdResult.getRemovedList().add( holdResult.allRowList.get( n).get( 0) + ",");
27
+ holdResult.getRemovedList().add( holdResult.allRowList.get( n).get( 1) + ",");
28
+ holdResult.getRemovedList().add( holdResult.allRowList.get( n).get( 2) + "\n");
29
+ }
30
+ }else {
31
+ continue; //.get(n)がnullの時にループを終わりたかったらbreakなんですが、.get(n+1)の処理を継続してよければ、ここはcontinueです。
32
+ }
33
+
34
+ }
35
+ catch ( Exception e) {
36
+ e.printStackTrace();
37
+ }
38
+
39
+ n++;
40
+ }
41
+ }
42
+ }
43
+ ```