【问题标题】:Matching data in a file to user input data using int (java)使用int(java)将文件中的数据与用户输入数据匹配
【发布时间】:2013-04-27 06:41:14
【问题描述】:

我需要扫描examdata.txt 文件并找到文件中的int 与用户输入的int 匹配的位置。我正在阅读的文件包含以下条目:

ACCY111 CO216 10 20 ABD ALSOP
ACCY111 CO228 10 16 AMBALAWANAR AVES
ACCY111 EALT006 10 72 艾森查默斯
ACCY111 GBLT1 10 72 陈登
ACCY111 GBLT2 10 72 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);
}
}

它什么也没输出..我哪里出错了?

【问题讨论】:

    标签: java io int compare


    【解决方案1】:

    我哪里出错了?

    要让您的代码使用任何输入,scan.hasNext()scan.hasNextInt() 都必须为真。但是,鉴于文件的第一个字符是字母,代码永远不会超过它。

    【讨论】:

    • scan.hasNext() 不应该一直评估直到下一个标记是 int 吗?
    • @JakeBarnby:不,它会一遍又一遍地查看同一个令牌。您需要致电scan.nextXXX() 进行升级。
    • 啊,我明白了。非常感谢你。我在 while 循环中添加了scan.next() 作为第一个命令,现在我至少看到了结果。但它只在评估正确之后打印标记。我怎样才能让它打印除日期之外的整行?例如,如果 ACCY111 CO216 10 20 ABD ALSOP 行的 targetDate = 10 将仅打印 20 ABD ALSOP。我要打印:ACCY111 CO216 20 ABD ALSOP
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 2018-08-01
    • 2023-03-17
    相关资源
    最近更新 更多