2013-11-22 77 views
0

我有下面的代码片段在我的项目:Java扫描仪不能正常工作?

public void addText(String s){ 
    Scanner scan; 
    int newInt = Integer.parseInt(s.substring(s.indexOf('\t') + 1 + 1)); 
    //find insertion point 
    String temp = ""; 
    scan = new Scanner(text); 
    int prev = 0; 
    while(scan.hasNextInt() && newInt > scan.nextInt()){ 
     temp += text.substring(prev, text.indexOf('\n')) + "\r\n"; 
     prev = text.indexOf('\n') + 1; 
    } 
    text = temp + s + "\r\n" + text.substring(prev); 
} 

这样做的目标是要插入一个字符串到现有的字符串,并把它放在一个有点“数字顺序”。

String s是一个格式化的字符串,看起来像"CityName\t\tSomeNumber"。该代码为newInt工程(通过调试确认)。不起作用的是while循环。即使text中有数据,scan.hasNextInt()也会失败。

例如,假设text = "Charlestown\t\t9",s = "Downville\t\t15"newInt得到分配15. while循环应重复一次和结束,因为15 > 9(按这些数字的升序组织城市)。但由于某种原因,扫描程序每次在条件语句的scan.hasNextInt()部分都返回false。

有什么建议吗?

回答

0

如果此扫描器输入信息的下一个标记可以 解释为使用nextInt()方法 默认基数中的一个int值的hasNextInt的Javadoc说

返回true。扫描仪不会超过任何输入。

这意味着如果你的下一个标记是“Charlestown”,这将返回false。在检查hasNextInt()之前,您必须从扫描仪中读取城镇的名称。

+0

谢谢!这部分代码现在已经修复! –