【问题标题】:ArrayList of Integers inside a while loop is refusing to printwhile循环内的整数数组列表拒绝打印
【发布时间】:2020-07-23 20:26:12
【问题描述】:

我正在解决来自 Advent of Code 的 problem,并尝试将输入文件的内容放入数组列表中,这是我的代码:

ArrayList<Integer> arrayList = new ArrayList<>();
    try (Scanner s = new Scanner(new File("input.txt")).useDelimiter(",")) {

        while (s.hasNext()) {
            int b = Integer.parseInt(s.next());
            arrayList.add(b);
        }

    }
    catch (FileNotFoundException e) {
        // Handle the potential exception
    }


    System.out.println(arrayList);

当我运行它时,它不会打印数组列表。我不明白为什么,谁能告诉我我做错了什么?

【问题讨论】:

  • 您是否要打印 arrayList 中整数的值?如果是这样,请看这里:stackoverflow.com/questions/9265719/print-arraylist
  • 如果它只打印[] 而没有其他内容,则 1) 文件为空,或 2) 未找到文件并且您忽略异常.
  • 也许您正在通过在 catch 块中没有任何代码来抑制异常。也许你的文件是空的,所以循环永远不会执行。
  • 当然!如果你得到一个异常,除了吞下它你什么都不做,并且你假设你已经成功地读取了值(即使你的文件可能不在你认为的位置)。学习如何使用调试器逐步执行程序也是一个好主意。
  • 我尝试对字符串数组列表做同样的事情,但我没有遇到这个问题,它打印了包含文件中所有数字的数组列表。但是一旦我将它改回 int arraylist 它就不会打印。 @DB

标签: java


【解决方案1】:

您可以验证您是否能够读取该文件。您的代码可以像这样修改。请检查它是否打印“找到文件”。如果不是,则意味着您尝试读取的文件不在类路径中。你可以参考https://mkyong.com/java/java-how-to-read-a-file/

...
File source = new File("input.txt");
        if(source.exists()) {
            System.out.println("File found");
        }
        try (Scanner s = new Scanner(source).useDelimiter(",")) {
...

【讨论】:

    【解决方案2】:

    我使用了 StringTokenizer,它运行良好。我不熟悉使用 Scanner 拆分项目,所以我将其转换为 StringTokenizer。希望你没事。

    public static void main(String[] args) throws IOException {
            ArrayList<Integer> arrayList = new ArrayList<>();
            Scanner s = new Scanner(new File("input.in"));
    
            StringTokenizer st = new StringTokenizer(s.nextLine(), ",");
    
            while (st.hasMoreTokens()) {
                int b = Integer.parseInt(st.nextToken());
                arrayList.add(b);
            }
            s.close();
    
            System.out.println(arrayList);
    
    }
    

    这会用你想要的值填充你的 ArrayList

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 2012-09-14
      • 1970-01-01
      • 2016-06-23
      相关资源
      最近更新 更多