当前位置: 首页 > 知识库问答 >
问题:

Java.split()仅将.txt文件放入单个数组元素[重复]

刘琨
2023-03-14

我试图将一个. txt文件分割成一个数组,这样我就可以从其中访问单个元素。然而,我得到以下错误,索引1出界长度1在BabySort.main(BabySort.java:21)。

我不确定哪里出了问题,因为我之前在测试字符串上使用了相同的代码,并且它拆分成了适当数量的元素

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;


public class babySort {
    public static void main(String[] args) throws FileNotFoundException {
        File inputFile = new File("src/babynames.txt");
        Scanner in = new Scanner(inputFile);


        String test = "Why wont this work?";
        String[] test2 = test.split("\\s+");
        System.out.println(test2[2]);

        while (in.hasNext()) {
            String input = in.next();
            String[] inputSplit = input.split("\\s+");
            //System.out.println(Arrays.toString(inputSplit));
            System.out.println(inputSplit[1]);
        }

            }
        }

共有1个答案

穆正青
2023-03-14

从留档:

扫描器使用定界符模式将其输入拆分为标记,默认情况下,定界符模式匹配空白。然后,可以使用各种后续方法将生成的令牌转换为不同类型的值。

我的理解是,您希望逐行读取输入。您可以使用FileReader而不是Scanner逐行读取文件。你也可以这样使用BufferedReader:

try (BufferedReader br = new BufferedReader(new FileReader(inputFile, StandardCharsets.UTF_8))) {
    String input;
    while ((input = br.readLine()) != null) {
       // process the line
       String[] inputSplit = input.split("\\s+");
      //System.out.println(Arrays.toString(inputSplit));
      System.out.println(inputSplit[1]);
    }
}
 类似资料:
  • 我是java新手,我想知道如何读取。txt文件,然后将每一行都放入数组单元格中。.txt文件的格式必须如下所示: 我已经尝试创建一个以这种方式实现的ReadFile类:

  • 我不确定如何开始这个,希望得到一些想法,可以帮助我。 我的代码示例:

  • 我正在编写一个文件编写器,它将ID和名称(这两个字符串)写入文本文件。这需要用户输入,然后将数据存储在txt文件中。但是,当我再次运行它时,任何新数据都会覆盖以前的数据,因此数据永远不会保存到txt文件中。 谁能告诉我如何保存这些数据,以便添加的任何新数据都存储在下一行,而不覆盖上一行? 谢啦

  • 我使用的是Gradle1.10,而android插件的版本是0.8.0。我的android项目需要这两个JAR:和。我这样添加文件: 在gradle构建期间,我得到一个错误消息,说这两个文件在中重复。我通过排除以下文件解决了问题: 我必须排除所有的,因为显然有一个重复的文件在所有的。 我想知道为什么会出现这个问题。是android插件的bug还是gradle本身的bug?排除上述文件会不会造成什么

  • 在这里你可以看到我正在处理的一些文件。 与我最相似的问题是这个问题(将一个文本文件文件夹合并到一个CSV中,每个内容都在一个单元格中),但我无法实现那里提出的任何解决方案。 我尝试的最后一个是Nathaniel Verhaaren在前面提到的问题中提出的Python代码,但我得到了与问题作者完全相同的错误(即使在实施了一些建议之后): 与我类似的其他问题(例如,Python:将多个。txt文件解析

  • 问题内容: 获取存储在数组中的列表的前n个元素的最快方法是什么? 考虑到这种情况: 选项1: 选项2: 选项3: 是否有更快的方法?也许使用Java8流? 问题答案: 选项1比选项2快 因为选项2创建了一个新引用,然后从中创建了一个元素数组(选项1完美调整了输出数组的大小)。但是,首先您需要通过一个错误来解决此问题。使用(不是)。喜欢,