为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英4014372 2023-09-06 15:04:25
我在这个简单的问题上浪费了几个小时,但我无法弄清楚为什么 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


查看完整回答
反对 回复 2023-09-06
  • 1 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信