StringTokeniser 不读取数据
StringTokeniser not reading data
我必须从文件中读取数据,并且我刚刚在 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");
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
此行引起的异常
String[] tokens = line.split(" ");
String[] date = tokens[1].split("-");
line = PKE2324,所以 tokens[] = { "PKE2324" } --> length = 1
令牌[1] --> ArrayIndexOutOfBoundException
解决这个问题:
StringTokenizer itr = new StringTokenizer("PKE2324 02-12-2020 200"
+ "\nMJD432 19-05-2019 150");
默认分隔符是空格。
如果你想要不同的分隔符,你应该在构造函数中传递分隔符。
我必须从文件中读取数据,并且我刚刚在 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");
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
此行引起的异常
String[] tokens = line.split(" ");
String[] date = tokens[1].split("-");
line = PKE2324,所以 tokens[] = { "PKE2324" } --> length = 1 令牌[1] --> ArrayIndexOutOfBoundException
解决这个问题:
StringTokenizer itr = new StringTokenizer("PKE2324 02-12-2020 200"
+ "\nMJD432 19-05-2019 150");
默认分隔符是空格。 如果你想要不同的分隔符,你应该在构造函数中传递分隔符。