一个“提前运行”奇怪现象
String filename = "phonebook.dat";
String string;
int count = 1;
BufferedReader fileout = new BufferedReader(new FileReader(filename));
while((string = fileout.readLine() ) != null)
{
StringTokenizer tokenzier = new StringTokenizer(string,"\t");
while(tokenzier.hasMoreTokens())
{
stdOut.println("\n********" + count + "********\n");
stdOut.println("Name : " + tokenzier.nextToken());
stdOut.println("Phonenumber : " + tokenzier.nextToken());
stdOut.println("QQ : " + tokenzier.nextToken());
stdOut.println("E-mail : " + tokenzier.nextToken());
stdOut.println("Group : " + tokenzier.nextToken());
count ++;
}
}
String select;
int selection;
BufferedReader br = new BufferedReader(new FileReader(filename));
StringBuilder sb = new StringBuilder();
String s;
while((s = br.readLine()) != null)
sb.append(s + " ");
StringTokenizer tokenizer = new StringTokenizer(sb.toString(),"\t");
ArrayList<String> array = new ArrayList<String>();
while(tokenizer.hasMoreTokens())
array.add(tokenizer.nextToken() + "\t");
stdErr.println("Please input the number of the person who you want to delete : "); //*********************
select = stdIn.readLine();
selection = Integer.parseInt(select);
我的程序时打开一个联系人信息存储的文件,例如:
Uknown 12345678910 123456789 123456789@qq.com friend Li Ming 123456 123456 123456@163.com friend ommited………………
每个信息隔一个换行符
然后我按照顺序读取,请注意,问题来了,我竟然奇迹的发现代码中注释为***************的地方竟然提前运行至上面的循环中间了,如:
//Output
********1********
Name : Uknown
Phonenumber : 12345678910
QQ : 123456789
E-mail : 123456789@qq.com
Group : friend
Please input the number of the person who you want to delete : //就是这里。本来应该出现在所有信息的后面。结果。。。。
********3********
Name : Li Ming
Phonenumber : 123456
QQ : 123456
E-mail : 123456@163.com
Group : friend
我以为是编译器抽风了,就重启了一下,第一次运行时正常者呢。结果第二次又成这样子了。。以前也有遇到过这种提前运行的情况,但是没有太在意 ,请问这到底是怎么一回事啊?怎么解决啊?好纠结。
------解决方案--------------------在控制台下运行不会出现此问题。
我猜测是在eclipse下。
eclipse跟运行的java程序是两个进程,
涉及进程间通信的问题,
不知道eclipse是如何实现的。