[問題] 關於foreach輸出的問題

看板java作者 (狙擊王XD)時間13年前 (2012/03/18 20:00), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/3 (看更多)
小弟算是Java的初學者(這幾天才開始碰) 我在書上看到關於foreach與陣列的範例 實在是看不太懂 而書上的解說又很快帶過 所以想來板上來問各位大大 (書上只有教 怎麼利用這個語法輸出陣列) 範例如下: public class app1_1 { public static void main(String args[]) { String[][] exam={{"A","B","C","D","E","F","G"}, {"ZERO"},{"ONE"},{"TWO"},{"THREE"}}; A:for(String[] str1:exam){ B:for(String str2:str1){ System.out.println(exam[0][str2.length()]); continue A; } break A; } } } 我用程式輸出的結果是 B E D D F (應該沒錯) 我所知道的[str2.length()]這邊應該是取得str2的長度 然後exam[0]應該是要取得 {"A","B","C","D","E","F","G"} 這個陣列裡的這些字 exam[0][str2的長度] 來抓exam裡面的值 可是不知道str2的長度是怎麼變化的 (依照結果來看str2的長度分別是1,4,3,3,5) 主要就是這for迴圈之間整個流程不太理解... 所以想請問一下各位大大這之間的流程...為什麼會造成輸出會是B E D D F 這樣啊? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.168.218.229

03/18 21:04, , 1F
你要印的應該是println(str2);
03/18 21:04, 1F

03/18 21:07, , 2F
應該說 你把str2也印出來就會知道怎麼一回事了
03/18 21:07, 2F
那個我的意思是 我想知道這題 是怎麼輸出B E D D F的 如果我輸出str2的話 會是 A ZERO ONE TWO THREE(這邊我大概能夠了解意思) ※ 編輯: SogeKing 來自: 1.168.218.229 (03/18 22:54)

03/19 00:43, , 3F
所以分別長度是 1 4 3 3 5 就分別取了 [1] [4] [3] [3] [5]
03/19 00:43, 3F

03/19 00:45, , 4F
記得陣列從 [0] 起算 所以就分別拿到 B E D D F 了
03/19 00:45, 4F
我大概了解這個意思了 [4] << 這個就是ZERO的長度 [3]<< 這個就是 ONE的長度 以此類推 這樣看應該沒錯吧@@? ※ 編輯: SogeKing 來自: 1.168.218.229 (03/19 05:08)

03/19 10:21, , 5F
建議你還是先把二維陣列搞清楚一點比較好...
03/19 10:21, 5F

03/19 11:05, , 6F
應該是說"ZERO"的長度是4才取[0][4]這個值...
03/19 11:05, 6F
文章代碼(AID): #1FPSvc0- (java)
文章代碼(AID): #1FPSvc0- (java)