回答編集履歴

4

iをnに修正

2018/04/07 12:06

投稿

yukapome789
yukapome789

スコア361

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  public void judgeName() {
30
30
 
31
- for(int n=0; i<holdResult.allRowList.size(); i++) {
31
+ for(int n=0; n<holdResult.allRowList.size(); n++) {
32
32
 
33
33
  try {
34
34
 

3

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

2018/04/07 12:06

投稿

yukapome789
yukapome789

スコア361

test CHANGED
@@ -72,10 +72,6 @@
72
72
 
73
73
  }
74
74
 
75
-
76
-
77
- n++;
78
-
79
75
  }
80
76
 
81
77
  }

2

コメントを追加

2018/04/07 12:00

投稿

yukapome789
yukapome789

スコア361

test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  try {
34
34
 
35
- if (holdResult.allRowList.get(n) != null) { //下の行で.get(0)した時にヌルポがでないようnullチェック
35
+ if (holdResult.allRowList.get(n) != null) { //下の行で.get(0)、.get(1)、get(2)した時にヌルポがでないようnullチェック
36
36
 
37
37
 
38
38
 

1

サンプルコードを追加

2018/04/07 08:31

投稿

yukapome789
yukapome789

スコア361

test CHANGED
@@ -1,5 +1,85 @@
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
3
 
4
4
 
5
5
  もし、`if (holdResult.allRowList.get( n) != null)`でループ回数を制限できていると思っていたら、それはあまりよくないです。このコードの場合、存在しない要素に対して`if (holdResult.allRowList.get( n) != null)`の処理を行ってしまっているために、OutOfIndex例外が出てしまっているのだと思いますよ。
6
+
7
+
8
+
9
+ ```
10
+
11
+ package save.function;
12
+
13
+
14
+
15
+ public class JudgeName {
16
+
17
+ HoldResult holdResult;
18
+
19
+
20
+
21
+ public JudgeName( HoldResult holdResult) {
22
+
23
+ this.holdResult = holdResult;
24
+
25
+ }
26
+
27
+
28
+
29
+ public void judgeName() {
30
+
31
+ for(int n=0; i<holdResult.allRowList.size(); i++) {
32
+
33
+ try {
34
+
35
+ if (holdResult.allRowList.get(n) != null) { //下の行で.get(0)した時にヌルポがでないようnullチェック
36
+
37
+
38
+
39
+ if ( holdResult.allRowList.get( n).get( 0).equals( holdResult.getPlayerName())) {
40
+
41
+ holdResult.setExistsTheName( true);
42
+
43
+ holdResult.setTotalWin( Integer.parseInt( holdResult.allRowList.get( n).get( 1)) + holdResult.getTotalWin());
44
+
45
+ holdResult.setTotalLose( Integer.parseInt( holdResult.allRowList.get( n).get( 2)) + holdResult.getTotalLose());
46
+
47
+ }
48
+
49
+ else {
50
+
51
+ holdResult.getRemovedList().add( holdResult.allRowList.get( n).get( 0) + ",");
52
+
53
+ holdResult.getRemovedList().add( holdResult.allRowList.get( n).get( 1) + ",");
54
+
55
+ holdResult.getRemovedList().add( holdResult.allRowList.get( n).get( 2) + "\n");
56
+
57
+ }
58
+
59
+ }else {
60
+
61
+ continue; //.get(n)がnullの時にループを終わりたかったらbreakなんですが、.get(n+1)の処理を継続してよければ、ここはcontinueです。
62
+
63
+ }
64
+
65
+
66
+
67
+ }
68
+
69
+ catch ( Exception e) {
70
+
71
+ e.printStackTrace();
72
+
73
+ }
74
+
75
+
76
+
77
+ n++;
78
+
79
+ }
80
+
81
+ }
82
+
83
+ }
84
+
85
+ ```