質問編集履歴

2

エラーの追記

2020/01/30 09:37

投稿

mobage_sb69er
mobage_sb69er

スコア7

test CHANGED
File without changes
test CHANGED
@@ -104,7 +104,7 @@
104
104
 
105
105
  // この次の行でエラー発生
106
106
 
107
- Map.Entry<String, String[][]> entry2 = entry_itr2.next();
107
+ Map.Entry<String, String[][]> entry2 = entry_itr2.next(); // 380行目
108
108
 
109
109
  String str_key2 = entry2.getKey();
110
110
 
@@ -121,3 +121,25 @@
121
121
  }
122
122
 
123
123
  ```
124
+
125
+
126
+
127
+ 追記のエラー文
128
+
129
+ ```
130
+
131
+ Exception in thread "main" java.util.ConcurrentModificationException
132
+
133
+ at java.util.HashMap$HashIterator.nextNode(HashMap.java:1445)
134
+
135
+ at java.util.HashMap$EntryIterator.next(HashMap.java:1479)
136
+
137
+ at java.util.HashMap$EntryIterator.next(HashMap.java:1477)
138
+
139
+ at KCFG.KCFG_main.ToDCG(main.java:380)
140
+
141
+ at KCFG.KCFG_main.main(main.java:109)
142
+
143
+ ```
144
+
145
+ main文内の109行目で上の追記のプログラムのあるメソッドを呼び出しています。

1

プログラムの追記

2020/01/30 09:37

投稿

mobage_sb69er
mobage_sb69er

スコア7

test CHANGED
File without changes
test CHANGED
@@ -71,3 +71,53 @@
71
71
 
72
72
 
73
73
  HashMapに入っていない普通の2次元配列(str[][])でlen_eins(str[0])のようにした場合はエラーは出ず、正しい配列に入っている(nullでない)要素数をが返ります。HashMapには予めkeyとvalueが入っており、str_keyもmap.get(str_key)[][]の中身も出力はできます。
74
+
75
+
76
+
77
+ 追記のプログラム
78
+
79
+ ```
80
+
81
+ Iterator<Map.Entry<String, String[][]>> entry_itr1 = map.entrySet().iterator();
82
+
83
+ while(entry_itr1.hasNext()) {
84
+
85
+ Map.Entry<String, String[][]> entry1 = entry_itr1.next();
86
+
87
+ for(int i=0;i<len_zwei(entry1.getValue());i++) {
88
+
89
+ for(int j=0;j<len_eins(entry1.getValue()[i]);j++) {
90
+
91
+ // 1度目の処理
92
+
93
+ }
94
+
95
+ }
96
+
97
+ }
98
+
99
+
100
+
101
+ Iterator<Map.Entry<String, String[][]>> entry_itr2 = map.entrySet().iterator();
102
+
103
+ while(entry_itr2.hasNext()) {
104
+
105
+ // この次の行でエラー発生
106
+
107
+ Map.Entry<String, String[][]> entry2 = entry_itr2.next();
108
+
109
+ String str_key2 = entry2.getKey();
110
+
111
+ for(int i=0;i<len_zwei(entry2.getValue());i++) {
112
+
113
+ for(int j=0;j<len_eins(entry2.getValue()[i]);j++) {
114
+
115
+ // 2度目の処理
116
+
117
+ }
118
+
119
+ }
120
+
121
+ }
122
+
123
+ ```