当前位置: 代码迷 >> J2SE >> java的从控制台接收数据的程序无法执行完毕(java核心技术上的一个程序)解决方法
  详细解决方案

java的从控制台接收数据的程序无法执行完毕(java核心技术上的一个程序)解决方法

热度:194   发布时间:2016-04-24 01:46:50.0
java的从控制台接收数据的程序无法执行完毕(java核心技术上的一个程序)
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;

public class Test {
public static void main(String[] args) {
Set<String> words=new HashSet<String>();
long tatolTime=0;
Scanner sc=new Scanner(System.in);
System.out.println(sc.hasNext());
while(sc.hasNext()){
System.out.println("请输入:");
String word = sc.next();
long callTime=System.currentTimeMillis();
words.add(word);
callTime=System.currentTimeMillis()-callTime;
tatolTime+=callTime;
}
Iterator<String> iter=words.iterator();
for (int i = 1; i <= 10; i++) {
System.out.println(iter.next());
System.out.println("...");
System.out.println(words.size()+tatolTime);
}
}
}


大家看看这个程序,我真的不知道应该怎么样结束这个程序。。。这是核心技术上的程序,我想,应该不会有什么问题吧。。。还请大家给指点一下唉。。。

------解决方案--------------------
我记得好像能这么写

java Test < 1.txt

1.txt里面就是你想输入的东西
------解决方案--------------------
这个程序要是结束了那才怪,首先Scanner sc=new Scanner(System.in);这句会线程阻塞,等到你在控制台上输入,如果你不输入那么程序一直等着,如果你输入的话那么while(sc.hasNext())这句就会触发,同时进入这个死循环了。程序就永远都无法执行完了。
修改意见:
Java code
        while (sc.hasNext()) {            System.out.println("请输入:");            String word = sc.next();            long callTime = System.currentTimeMillis();            words.add(word);            callTime = System.currentTimeMillis() - callTime;            tatolTime += callTime;            if(words.size() >= 10){                break;            }        }
  相关解决方案