请老大指教,关于scanner控制台输入输出问题
import java.util.*;
public class setTest
{
/**
  * @param args
  */
public static void main(String[] args)
{
  // TODO Auto-generated method stub
  Set<String> words=new HashSet<String>();
  //long totalTime=0;
  Scanner in=new Scanner(System.in);
  while(in.hasNext())
  {
   String word=in.next();
   //long callTime=System.currentTimeMillis();
   words.add(word);
   //callTime=System.currentTimeMillis()-callTime;
   //totalTime+=callTime;
  }
  in.close();
  Iterator<String> iter=words.iterator();
  for(int i=1;i<-20;i++)
  {
   System.out.println(iter.next());
  }
  System.out.println(words.size());
}
}当输入一字符串后(空格隔开),问什么遍历没有显示???

解决方案 »

  1.   

    for(int i=1;i <-20;i++) i<-20  ???????????
      

  2.   

    while(in.hasNext()) 是个死循环,自己在循环体中设置结束循环条件吧。
      

  3.   

    up,hasNext()返回的是个逻辑值,你的while没有办法结束
      

  4.   

    来晚了三楼说得快。。看一下正则表达式。while的语法
      

  5.   

    while(in.hasNext()) 死循环。。
      

  6.   

    while(in.hasNext()) 一般从文件输入这么写
      

  7.   

    楼上都说对了。
    while()是个死循环,要么去掉循环,当做一个字符串读取,要么使用正则表达式试一试,
      

  8.   

    你把源关了
    ctrl+c一下
    in.hasNext()就返回false了
    就可以跳出看到结果了吧
      

  9.   

    while(in.hasNext()) ???这个是!搞大了吧~!~
      

  10.   


         Set words = new HashSet(); 
      //long totalTime=0; 
      Scanner in = new Scanner(System.in); 
      int j = 1;
      while(in.hasNext()) 
      { 
         
          String word=in.next(); 
      //long callTime=System.currentTimeMillis(); 
      words.add(word); 
      //callTime=System.currentTimeMillis()-callTime; 
      //totalTime+=callTime; 
      j++;
      if (j > 5){
      break;
      }
      } 
      in.close(); 
      Iterator iter = words.iterator(); 
      for(int i=1;i < j;i++) 
      { 
      System.out.println(iter.next()); 
      
      } 
      System.out.println(words.size()); 
    试试看
    对你应该有帮助吧
    ^_*