输入(以空格分隔):
1 1 2 3
2 1 7
3 3 7
4 1 5
5 3 6
我想将这些输入处理为:
对于文本文件::(first_element,例如1)中的每一行,将一个int变量(例如,m)和下面的(next_elements,例如1 2 3)放入一个ArrayList(比如说N)
我尝试了以下内容:
Scanner file_scanner = new Scanner(filename);
while (file_scanner.hasNextLine()) {
String[] line = file_scanner.nextLine().split("\\s+");
String str1 = line[0];
String str2 = line[1];
m = Integer.parseInt(str1);
Scanner line_scanner = new Scanner(str2);
while(line_scanner.hasNext()) {
int n = line_scanner.nextInt();
N.add(n);
}
}
但是我无法像我想的那样解析输入。关于如何使用Scanner处理输入线的两个部分的任何建议?或者,甚至如何检查当前行的结尾(EOL)以及如何更容易地解析第一个元素?
答案 0 :(得分:1)
在您的代码中尝试此String[] line = file_scanner.nextLine().split("\\s+",2);
。它会将每一行分成2个令牌。
编辑:第[1]行将包含其余数字,您无需再次解析它。
答案 1 :(得分:0)
对不起它可能不是最有效的,因为它是凌晨4:39:
Scanner s = new Scanner(file);
int m = 0;
List<Integer> list = null;
while(s.hasNextLine())
{
Scanner s2 = new Scanner(s.nextLine());
int count = 0;
list = new ArrayList<Integer>();
while (s2.hasNextInt())
{
if(count == 0)
{
m = s2.nextInt();
}
else
{
list.add(s2.nextInt());
}
count++;
}
System.out.println(m + " " + list);
}