Java Scanner 的 nextLine() 方法未找到任何行

我在这个简单的问题上浪费了几个小时,但我无法弄清楚为什么 nextLine() 找不到下一行。请帮助我,谢谢!

我尝试了这个代码:https://www.geeksforgeeks.org/scanner-nextline-method-in-java-with-examples/作为实验,自然它有效,但我自己的不会。

变量“test”是从文件中复制的。

代码部分:

可观察列表数据;

@Override

public void initialize(URL url, ResourceBundle rb) {


    int lines = 0;

    try {

    File f = new File("C:\\Users\\EDU_BYQN_0965\\Documents\\NetBeansProjects\\JSZ_SB\\src\\jsz_sb\\fokonyvi_kivonat.txt");

    String test = "113,Vagyoni értékű jogok,3600,0,\n" +

            "1173,Vagyoni értékű jogok értékhelyesbítése,360,0,\n" +

            "1193,Vagyoni értékű jogok értékcsökkenése,0,2400,\n" +

            "5,t,5,5,";


    Scanner s = new Scanner(f);

    while (s.hasNext() && s.nextLine() != null) lines++;

    String[][] array = new String[lines][4];

    String[] temporary = new String[4];

    for (int i = 0; i < lines; i++) {

        temporary = s.nextLine().split(",");

        for (int j = 0; j < 4; j++) {

            array[i][j]=temporary[j];

            adatok = FXCollections.observableArrayList(

                    new TrialBalance(array[i][0], array[i][1], Integer.parseInt(array[i][2]), Integer.parseInt(array[i][3])));               

        }            

    }

            } catch (FileNotFoundException ex) {

        Logger.getLogger(FXML_scene2Controller.class.getName()).log(Level.SEVERE, null, ex);

    }

数组“临时”应包含文件的第一行,至少在第一个循环中,并且不应出现运行时错误。


慕桂英4014372
浏览 72回答 1
1回答

肥皂起泡泡

您Scanner在这一行中耗尽了:while&nbsp;(s.hasNext()&nbsp;&&&nbsp;s.nextLine()&nbsp;!=&nbsp;null)&nbsp;lines++;它停止了,因为没有更多的线路了。(请注意,检查hasNext()与对 的调用配对next(),并hasNextLine()与 配对nextLine())。因此,如果您尝试从 中读取更多行Scanner,则没有更多内容可读取。Scanner您要么需要创建;的新实例&nbsp;或者使用不需要知道先验大小的数据结构,例如 a (或根据需要调整数组大小;但是当透明地为您执行此操作List时,“手动”执行此操作没有什么意义)。ArrayList
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java