如何迭代并将 Text.txt 中的下一行打印到 NetBeans 中的输出控制台?

问题描述 投票:0回答:1

我试图从文本文件中读出我的文本注释,但由于 NoSuchElementException,它似乎无法迭代到下一行代码。我该如何解决这个问题?

我提前道歉,由于我缺乏写作礼仪,因为我是这个网站的新手。但尽管如此,这是我的代码:

public class Praktikum11_4 {
    private Scanner input;
   
    public void membukaFile()
    {
        try {
            input = new Scanner(new File("favouriteplace.txt"));
        }   catch(FileNotFoundException e)
        {
            System.err.print("File yang anda cari" +
                    "Tidak ditemukkan");
            System.exit(1);
        }   catch(IllegalStateException e)
        {
            System.err.print("Error membaca File");
        }
        
    }
    
    public void membacaData()
    {
        try{
            while(input.hasNext())
            {   
                for (int i = 1 ; i <= 7 ; i++ )
                {
                    // Scan the line
                    String location = input.nextLine();
                    double rating = input.nextDouble();
                    System.out.printf(i+". " + "%s dengan rating %f\n", location, rating);
                }
            }
        }catch (NoSuchElementException e)
        {
            System.err.println("Element not found ERROR 101 ");
        }
    }
    
    public void menutupFile()
    {
        if (input != null)
        {
            input.close();
            System.out.print("File berhasil untuk ditutup");
        }
    }
    
    public static void main(String[] args)
    {
        
    }
    

}

这是我尝试迭代并打印到输出控制台的文件:

File that consists of the data](https://i.stack.imgur.com/dJ2KC.png)

这是我得到的输出:

UMN 学生最喜欢的五个地方

  1. Bungkushin dengan评分4.300000

找不到元素 ERROR 101 File berhasil untuk ditutup

因此,这就是我期望的输出:

Expected Output](https://i.stack.imgur.com/NtKv4.png)

java oop static nosuchelementexception
1个回答
0
投票

出现 NoSuchElementException 是因为您在 for 循环内调用 input.nextDouble() ,而没有检查输入文件中是否有下一个可用的 double 值。在尝试读取之前,您应该检查是否存在下一个双精度值。另外,无论是否发生异常,都应该正确处理异常并关闭文件。

public void readData() {
try {
    int i = 1;
    while (input.hasNext()) {
        String location = input.nextLine();
        if (input.hasNextDouble()) {
            double rating = input.nextDouble();
            input.nextLine(); // Consume the newline character after the double
            System.out.printf("%d. %s with rating %.2f\n", i, location, rating);
            i++;
        } else {
            System.err.println("Invalid rating format for location: " + location);
            input.nextLine(); // Consume the entire line to move to the next line
        }
    }
} catch (NoSuchElementException e) {
    System.err.println("Element not found ERROR 101");
}
}

确保在调用 readData() 之前调用 openFile() 打开文件,并在完成后调用 closeFile() 关闭文件。另外,不要忘记添加 main 方法来执行程序。

© www.soinside.com 2019 - 2024. All rights reserved.