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

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

王林
王林转载
2024-02-22 13:40:11998浏览

php小编香蕉带来的java问答,今天我们来探讨如何在NetBeans中实现迭代并将Text.txt文件中的下一行内容打印到输出控制台。这个问题涉及到文件读取和迭代的技巧,通过合理的代码实现,可以轻松完成这一任务。让我们一起来看看具体的解决方法吧!

问题内容

我试图从文本文件中读出我的文本注释,但由于 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)
    {
        
    }
    

}

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

由数据组成的文件](https://i.stack.imgur.com/dj2kc.png)

这是我得到的输出:

umn 学生最喜欢的五个地方

  1. bungkushin dengan 评分 4.300000

找不到元素 error 101 file berhasil untuk ditutup

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

预期输出](https://i.stack.imgur.com/ntkv4.png)

解决方法

发生 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 方法来执行程序。

以上是如何迭代并将 Text.txt 中的下一行打印到 NetBeans 中的输出控制台?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除