我在这个简单的问题上浪费了几个小时,但我无法弄清楚为什么 nextLine() 找不到下一行。请帮助我,谢谢!我尝试了这个代码:https://www.geeksforgeeks.org/scanner-nextline-method-in-java-with-examples/作为实验,自然它有效,但我自己的不会。变量“test”是从文件中复制的。代码部分:可观察列表数据;@Overridepublic 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); }数组“临时”应包含文件的第一行,至少在第一个循环中,并且不应出现运行时错误。
1 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
您Scanner
在这一行中耗尽了:
while (s.hasNext() && s.nextLine() != null) lines++;
它停止了,因为没有更多的线路了。(请注意,检查hasNext()
与对 的调用配对next()
,并hasNextLine()
与 配对nextLine()
)。
因此,如果您尝试从 中读取更多行Scanner
,则没有更多内容可读取。
Scanner
您要么需要创建;的新实例 或者使用不需要知道先验大小的数据结构,例如 a (或根据需要调整数组大小;但是当透明地为您执行此操作List
时,“手动”执行此操作没有什么意义)。ArrayList
添加回答
举报
0/150
提交
取消