StringTokeniser不读取数据

问题描述

我必须从文件中读取数据,并且刚刚在StringTokenizer中将一些示例数据作为String输入。我在这里不明白我的代码有什么问题。有人可以建议吗?

import java.util.StringTokenizer;

public class rough {

    public static void main(String[] args) throws Exception {
        StringTokenizer itr = new StringTokenizer("PKE2324 02-12-2020 200"
      + "\nMJD432 19-05-2019 150");

        while (itr.hasMoretokens()){
            String line = itr.nextToken().toString();
            String[] tokens = line.split(" ");
            String[] date = tokens[1].split("-");
            String yr = date[2];
            String reg = tokens[0];
            String regy = new String(reg + " " + yr);
            System.out.println(regy);   
            }
     }

}

我想以字符串形式获取注册号和年份。当我运行它时,我不断得到ArrayIndexOutofBounds

解决方法

这是由于逻辑错误和不适当的分隔符引起的运行时错误类型。

假设您要使用换行符对大字符串进行标记,请使用\n作为StringTokenizer的分隔符。

看看下面满足您的用例的更正代码:

import java.util.StringTokenizer;

public class rough {

    public static void main(String[] args) throws Exception {
        StringTokenizer itr = new StringTokenizer("PKE2324 02-12-2020 200"
    + "\nMJD432 19-05-2019 150","\n");

        while (itr.hasMoreTokens()){
            String line = itr.nextToken().toString();
            String[] tokens = line.split(" ");
            String[] date = tokens[1].split("-");
            String yr = date[2];
            String reg = tokens[0];
            String regy = new String(reg + " " + yr);
            System.out.println(regy);   
            }
    }
}

输出:

PKE2324 2020
MJD432 2019
,

此行引起的异常

console.log( 
  accordionItem.children[0].firstChild.textContent
)

line = PKE2324,因此tokens [] = {“” PKE2324“}->长度= 1 tokens [1]-> ArrayIndexOutOfBoundException

要解决此问题:

<div id="accordionItem" class="filter_middle-stage2-list_wrapper">
  <li style="font-weight: bold;">Pens<span>(1200)</span></li>
</div>

默认分隔符为空格。 如果要使用其他分度,则应在构造函数中传递分度。