【问题标题】:reading tab delimited textfile java读取制表符分隔的文本文件java
【发布时间】:2023-03-31 19:01:01
【问题描述】:
10
aaa aaa aaa
bbb bbb bbb
ccc ccc ccc
ddd ddd ddd

我有一个文本文件,我试图用制表符分隔符读取。每当我读取文件时,我在 10 之后得到一个 arrayindexoutofbound 错误。我在网上搜索,发现我必须在 \t 后面添加一个 -1 但我仍然得到同样的错误。

 try{
        Scanner scan = new Scanner(new File("1.txt"));
        String line="";
        int readline = Integer.parseInt(scan.nextLine());//

        while (scan.hasNextLine())
        {
            line = scan.nextLine();

            if(line.equals("ccc"))
            {  
                break;
            }
        String[] split=line.split("\t");

            array.add(split);
        } 

【问题讨论】:

  • 你知道break 语句的作用吗?
  • 你为什么要使用 parseInt ?那是为了从字符串中获取 int 值。
  • 无论出于何种原因,第一行显然都是一个数字。在您发布的代码中我看不到任何地方会导致数组索引超出范围。您可以发布更多代码或堆栈跟踪吗?
  • 如果您说哪个函数调用引发了 ArrayIndexOutOfBounds 异常,这将很有帮助。
  • 你能发布堆栈跟踪吗?我的意思是答案很简单,但没有人能看到ArrayIndexOutOfBoundException 的原因

标签: java file text tabs delimiter


【解决方案1】:

这样你的代码就会失去这个丑陋的中断(中断大部分时间是可以避免的......)

  try{
    Scanner scan = new Scanner(new File("1.txt"));
    String line="";
    int readline = Integer.parseInt(scan.nextLine());//

    while (scan.hasNextLine())
    {
        line = scan.nextLine();

        if(!line.equals("aaa")){
           String[] split=line.split("\t");
           array.add(split);
        }
    }  

关于你的问题,我认为你正在用第一行的整数初始化你的数组,但它是 10,你有 12 个元素。因此索引超出范围,但您的问题仍不清楚...

【讨论】:

  • 嗯,我只是按照示例格式,但是你是对的。
  • 你们怎么知道这些,你不知道他想要达到什么目的。而且都没有回答问题!
  • 他要阅读“制表符分隔的文本文件”,标题是这样写的
  • 是的格伦是对的我修改了我的答案我认为array Object 是某种基于数组的自定义类。这个 undelying 数组用第一个整数初始化。 add 函数接受 String 数组 split 并将它的每个元素添加到数组中。或者他尝试在长度为 10 的数组中添加 12 个元素。
  • @Rakesh 没错,但似乎不仅仅是阅读。他为什么要跳过一些行?异常从何而来?
【解决方案2】:

如果你使用Scanner这里不需要split,你可以使用next()这里如下

    Scanner sc=new Scanner(new FileReader("D:\\test.txt"));
    while (sc.hasNextLine()){
        System.out.println(sc.next());
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 2021-09-22
    • 2018-05-24
    • 2015-07-07
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多