Java扫描程序-在最后一行停止
我有一个问题,在我的程序中,我想用扫描仪读取一个.txt文件。txt文件如下所示:Java扫描程序-在最后一行停止,java,list,java.util.scanner,Java,List,Java.util.scanner,我有一个问题,在我的程序中,我想用扫描仪读取一个.txt文件。txt文件如下所示: 10 2 20 3 30 5 40 6 750 我想将每一列存储在列表中,但最后一行750将分别存储在int变量中。我试过这样的方法: public class Testing { final static Charset ENCODING = StandardCharsets.UTF_8; public static LinkedHashMap<Integer, Intege
10 2
20 3
30 5
40 6
750
我想将每一列存储在列表中
,但最后一行750
将分别存储在int
变量中。我试过这样的方法:
public class Testing {
final static Charset ENCODING = StandardCharsets.UTF_8;
public static LinkedHashMap<Integer, Integer> readTextFile() throws IOException {
LinkedHashMap<Integer, Integer> finalT = new LinkedHashMap<Integer, Integer>();
int suma;
List<Bancnota> bancnote = new ArrayList<Bancnota>();
String userHomeFolder = System.getProperty("user.dir");
String finalPath = userHomeFolder + "/src/atm/TEST.txt";
Path path = Paths.get(finalPath);
try (Scanner scanner = new Scanner(path, ENCODING.name())) {
while (scanner.hasNext()) {
String line = scanner.nextLine();
String arr[] = line.split(" ");
if (arr.length == 2){
finalT.put(scanner.nextInt(), scanner.nextInt());
System.out.println(finalT);
} else {
suma = scanner.nextInt();
}
}
scanner.close();
}
return finalT;
}
一切正常。有没有办法让扫描仪停在最后一行?谢谢这里有一些问题: 您的数据集
102
。这些数字由两个空格分隔,因此您的字符串.split
方法将生成一个包含三个条目的数组<代码>行.split(“”->{10',“”,“,”2“}除非您使用split(“”)
那么您使用的扫描仪就错了。您可以使用scanner.nextLine()阅读整行内容
然后您使用了几次scanner.nextInt()
。但这将在您已经阅读的行之后读取下一个数字。我想你应该从你读到的行中解析整数。 所以我想你想要你的台词
finalT.put(scanner.nextInt(), scanner.nextInt());
[...]
suma = scanner.nextInt();
像这样:
finalT.put(Integer.parseInt(arr[0]), Integer.parseInt(arr[1]));
[...]
suma = Integer.parseInt(arr[0]);
将while循环更改为如下
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String arr[] = line.split(" ");
if (arr.length == 2) {
finalT.put(Integer.parseInt(arr[0]),Integer.parseInt(arr[1]));
System.out.println(finalT);
} else {
suma = Integer.parseInt(arr[0]);
}
}
你能用合理的缩进发布你的代码吗?@khelwood,我更新了我的问题,这都是我的代码。
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String arr[] = line.split(" ");
if (arr.length == 2) {
finalT.put(Integer.parseInt(arr[0]),Integer.parseInt(arr[1]));
System.out.println(finalT);
} else {
suma = Integer.parseInt(arr[0]);
}
}