【问题标题】:Importing .txt file and saving it in to class导入 .txt 文件并将其保存到类中
【发布时间】:2014-10-15 02:40:05
【问题描述】:

我正在尝试导入存储在 .txt 文件中的值并将其存储在使用数组的类中。 但我不能这样做,我收到 ArrayIndexoutofboundException1 错误。 你能帮我解决一下吗?

我的文本文件是这样的

# 查看所有文本
# 这里有东西 91220 菲格罗亚和博览会 213-749-9302
91220 菲格罗亚和博览会 213-749-9302
91220 菲格罗亚和博览会 213-749-9302
91220 菲格罗亚和博览会 213-749-9302

我有一个名为 prereqclass 的类 这是我的代码

if ( context.getAttribute("Preqattr") == null )

{

    ArrayList<prereqclass> prereqcl = new ArrayList<prereqclass>();
        String file = this.getServletContext().getRealPath("/") + "download.txt";
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line;
            while ((line = br.readLine()) != null) {
             if (line.trim().startsWith("#")) {
                    // do nothing
                 System.out.println("Entering # loop");
                }else{
                    System.out.println("Entering the lines");
               String[] tokens = line.split("/t");
                 prereqcl.add(new prereqclass(tokens[0].trim(),tokens[1].trim(),tokens[2].trim() ) );
                 System.out.println("Attempt Success");
               for (String token : tokens)
                    System.out.println("\t" + token.replace('"', ' ').trim() );

                System.out.println("-------------------");

               }

               }

                br.close();

            context.setAttribute("Preqattr", prereqcl);
               }


               catch(IOException e){
            e.printStackTrace();
        }       
    }

这是错误 java.lang.ArrayIndexOutOfBoundsException:1 在 prereq.prereqserv.init(prereqserv.java:64)

【问题讨论】:

    标签: java arrays import


    【解决方案1】:

    这一行:

    String[] tokens = line.split("/t");
    

    可能正在尝试拆分制表符分隔的行,但您使用的是正斜杠而不是反斜杠。应该是:

    String[] tokens = line.split("\t");
    

    您应该在尝试索引之前检查tokens 的长度,以帮助捕获这些类型的错误。即使进行了上述更改,如果您遇到由于任何原因未使用制表符分隔的行,您将得到相同的异常。我建议在您访问 tokens 数组的地方包装代码并检查长度:

    if (tokens.length >= 3) {
        prereqcl.add(new prereqclass(tokens[0].trim(),tokens[1].trim(),tokens[2].trim() ) );
    }
    else {
        System.out.println("Only found " + tokens.length + " tokens.");
    }
    

    【讨论】:

    • 如果文本用逗号“分隔”如何拆分,例如:CS120,网站开发简介
    • split("\t") 可以被任何其他字符重复使用。我会为你留下详细信息:)
    【解决方案2】:

    解决此类问题的正确方法是逐行逐行检查您的代码。在错误所在的位置设置一个断点,然后查看每个变量并确定该变量是否是它应该是的。如果不是,则尝试再次单步执行代码以查看变量如何进入错误状态。

    作为一个提示,我猜测令牌中的项目没有你想象的那么多。你应该检查一下这是为什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 2015-01-28
      • 1970-01-01
      • 2018-03-01
      相关资源
      最近更新 更多