帮忙看看下面的程序,谢谢。

将字符串依所设置的条件予以分离:安\t 分离开,执行结果可以自己执行一下,程序没有问题。那个for()语句是什么意思,非常感谢。
public class SplitStringDemo
{
public static void main(String[] args)
{
String[] fakeFileData={"justin\t64/5/26\t0939002302\t5433343","momor\t68/7/23\t0939100391\t5432343"};
for(String data : fakeFileData)
{
String[] tokens = data.split("\t");
for(String token : tokens)
System.out.print(token + "\t|");
System.out.println();
}
}
}

把这个程序可不可以改成这个样子,不可以的话,帮忙解释一下原因,非常感谢。

public class SplitStringDemo
{
public static void main(String[] args)
{
String[] fakeFileData={"justin\t64/5/26\t0939002302\t5433343","momor\t68/7/23\t0939100391\t5432343"};

String[] tokens = fakeFileData.split("\t");

for(String token : tokens)
System.out.print(token + "\t|");
System.out.println();

}
}

1、for语句就是遍历对象的一种方式,是java5的新特征之一,是for语句的特殊简化版本,习惯上将这种特殊的for语句格式称之为“foreach”语句。
foreach的语句格式:
for(元素类型t 元素变量x : 遍历对象obj){
引用了x的java语句;
}
相当于
for(int i = 0; i<fakeFileData.length; i++) {
String[] tokens = fakeFileData[i].split("\t");
……
}
2、不可以改成下面的样子,首先它根本不能通过编译,String[] tokens = fakeFileData.split("\t");这句本身就是错误的,fakeFileData的类型是字符串数组String[],他根本没有split(String s)方法。fakeFileData作为一个字符串数组,里面包含了两段字符串,想要处理每段字符串是需要遍历这个数组,并把其中每段字符串提取出来(寄存在变量data中)再进行split操作的。
使用split截断的字符串又形成一个新的字符串数组,再次循环把它们从数组中取出,并打印出来。
当然你也可以不用循环,而直接使用下标取出数组中的字符串:
String[] tokens = fakeFileData[0].split("\t");
String[] tokens = fakeFileData[1].split("\t");追问

那个遍历 是什么意思呢???

追答

遍历就是循环的访问啊,比如访问数组中的每个元素。
你这段程序中有两个遍历语句(for),第一个是从fakeFileData,也就是{"justin\t64/5/26\t0939002302\t5433343","momor\t68/7/23\t0939100391\t5432343"}(注意数组中的两个元素是用逗号分隔表示的)中循环取出
“justin\t64/5/26\t0939002302\t5433343”和“momor\t68/7/23\t0939100391\t5432343”
因为有两个元素,所以第一个for中的程序执行两次,第一次处理“justin\t64/5/26\t0939002302\t5433343”,以此类推。
第二个循环是处理被截断的字符串,如“justin\t64/5/26\t0939002302\t5433343”被“\t”截断以后就变成了{"justin", "64/5/26", "0939002302", "5433343"},循环遍历这个数组,方法和含义和上面的类似,这次取出的元素被打印出来。

追问

非常 谢谢!!!

温馨提示:答案为网友推荐,仅供参考
相似回答