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

看板java作者 (LaPass)時間13年前 (2012/03/19 13:01), 編輯推噓2(202)
留言4則, 4人參與, 最新討論串2/3 (看更多)
String[] 等於一個陣列,裡面裝的是String ┌String String[]┼String ├String └..... String[][] 等於一個陣列,陣列裡面裝的是String[] ┌String[] String[][]┼String[] ├String[] └..... 以此類推 那,foreach這個東西 只要記得,他是把陣列中的東西全部抓出來就好 String[] a = {"a","b","c"} for(String b:a) 把String[] //a中的字串一個個讀出來 { //對每個字串進行操作(命名為b) System.out.println(b); } 當然也可以套用到String[][]上,就是你的那個範例 for(String[] str1:exam) //從String[][] exam中抓出String[] { //並命名為str1 for(String str2:str1) //再從String[] str1抓出每個字串,命名str2 { System.out.println(exam[0][str2.length()]); //↑這種用不好,用foreach再用索引的話,會提高犯錯率 //直接印str2比較不容易出錯 System.out.println(str2); } } 再來,break跟continue 這用法要去看迴圈那一部分 先搞懂foreach再去看會比較好,把兩種東西混在一起看只會提高學習的混亂程度 如果你覺得範例的迴圈亂跳的話,十之八九是因為那個break跟continue的關係 到底是哪本書丟這種混和用法當範例啊..... 補充一下 如果覺得程式跑得很奇怪的話 大部分的ide都有Step by Step的執行方式 可以用那種方式一步步執行,就能知道程式怎麼跑的 ※ 引述《SogeKing (狙擊王XD)》之銘言: : 小弟算是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: 61.59.16.65 ※ 編輯: LaPass 來自: 61.59.16.65 (03/19 13:03)

03/19 13:18, , 1F
同意,用來當作解說觀念的範例爛透了
03/19 13:18, 1F

03/19 13:20, , 2F
推詳細的解釋,再推「到底是哪本書丟這種混和用法當範例啊」
03/19 13:20, 2F

03/19 17:04, , 3F
感謝各位大大的解說 這個範例算是比較難的
03/19 17:04, 3F

03/27 14:05, , 4F
大推 初學者不該很多觀念混著學 尤其是亂跳的迴圈= =
03/27 14:05, 4F
文章代碼(AID): #1FPhskQT (java)
文章代碼(AID): #1FPhskQT (java)