2013-04-27 68 views
0

我需要扫描examdata.txt文件并找到文件中的int与用户输入的int匹配的位置。我在读该文件包含条目:CO216 10 20 ABD ALSOP
ACCY111 CO228 10 16 AMBALAWANAR AVES
ACCY111 EALT006 10 72 AYSON CHALMERS
ACCY111 GBLT1 10 72 CHAN邓
ACCY111 GBLT2 10 72使用int将文件中的数据匹配到用户输入数据(java)

ACCY111 DES GARDEN

其中第三项是我想要使用的日期。

这是我的代码:

public void printSession(int targetDate) 
{ 

try 
{ 
    Scanner scan = new Scanner(new File("examdata.txt")); 
    while (scan.hasNext()) 
    { 
     if (scan.hasNextInt()) 
     { 
      int date = scan.nextInt(); 
      if (date == targetDate) 
      { 
       UI.println(scan.nextLine()); 
      } 
     } 
    } 
} 

catch (IOException e) 
{ 
    UI.println("File read error." + e); 
} 
} 

它输出什么..我要去哪里错了?

回答

0

我哪里错了?

对于要消耗任何输入的代码,scan.hasNext()scan.hasNextInt()必须为true。但是,鉴于文件的第一个字符是一个字母,代码将永远不会超过它。

+0

但不应该'scan.hasNext()'继续评估,直到下一个标记是一个int? – 2013-04-27 06:53:45

+0

@JakeBarnby:不,它一遍又一遍地看着同样的道理。你需要调用'scan.nextXXX()'来推进。 – NPE 2013-04-27 06:54:27

+0

啊我明白了。非常感谢你。我在while循环中添加了'scan.next()'作为第一个命令,现在我至少可以看到结果。但是只有在评估结果正确后才打印令牌。我怎样才能让它打印除日期之外的整条线? 例如,如果'targetDate' = 10行 ACCY111 CO216 10 20 ABD ALSOP将只打印20个ABD ALSOP。我想打印: ACCY111 CO216 20 ABD ALSOP – 2013-04-27 07:03:02

相关问题