我正在尝试从一个文本文件中拆分一些字符串,这些文件在整数之间有选项卡。整数/ t整数/ t整数。
50
1 2 46
1 15 38
1 16 43
1 21 4
1 25 24
1 35 2
1 43 6
我尝试使用字符串令牌但ArrayIndexOutOfBoundsException
出来了,所以我自己做了一些调试并发现了这个。
我的代码如何:
public static void main(String[] args) throws FileNotFoundException {
Scanner input = new Scanner(new File("Datas.txt"));
String data;
int i = 0;
while (input.hasNextLine()) {
data = input.nextLine();
String[] sp = data.split("\\t+");
String n1 = sp[0];
System.out.println("|" + n1 + "|");
}
input.close();
}
这是我编译并运行它时结果的图片链接。
编辑:不知道为什么结果会像这样结果。切换到bufferedReader,现在一切都很好。谢谢你的帮助。
答案 0 :(得分:0)
这应该正确分割
while(input.hasNextLine())
{
data = input.nextLine();
String [] sp = data.split("\\s+");
if(sp.lenght>1){
String n1 = "|";
for(String tmp:sp){
n1=n1.concat(h);
}
n1=n1.concat("|");
System.out.println(n1);
}
}
答案 1 :(得分:0)
按如下方式更改您的代码
public static void main (String []args) throws FileNotFoundException {
Scanner input = new Scanner(new File("D:\\sample.txt"));
String data;
int i = 0;
while(input.hasNextLine())
{
data = input.nextLine();
String [] sp = data.split("\t");
String n1 = sp[0];
System.out.println("|" + n1 + "|" );
}
input.close();
}
答案 2 :(得分:0)
您可能不会使用Scanner#nextInt()方法。
File f = new File("Datas.txt");
Scanner scanner = null;
try {
scanner = new Scanner(f);
while (scanner.hasNextInt()) {
System.out.println(scanner.nextInt());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (scanner != null) {
scanner.close();
}
}
答案 3 :(得分:0)
我会做得更简单
while (sc.hasNext()) {
String next = sc.next();
}
它用空格和新行打破