Java扫描程序-在最后一行停止

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

我有一个问题,在我的程序中,我想用扫描仪读取一个.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, 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]);
            }
        }