作者LaPass (LaPass)
看板java
标题Re: [问题] 关於foreach输出的问题
时间Mon Mar 19 13:01:31 2012
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)
1F:→ cyberwizard:同意,用来当作解说观念的范例烂透了 03/19 13:18
2F:推 eieio:推详细的解释,再推「到底是哪本书丢这种混和用法当范例啊」 03/19 13:20
3F:推 SogeKing:感谢各位大大的解说 这个范例算是比较难的 03/19 17:04
4F:→ gameking:大推 初学者不该很多观念混着学 尤其是乱跳的回圈= = 03/27 14:05