带格式的 ArrayList

ArrayList with formatting

为我的 ArrayList 代码苦苦挣扎。 我需要生成 20 个 1 到 200 之间的随机数。 它有效但是当我在数组列表中显示所有内容时,它都是水平显示的 (即:[190.9873874849,3.45694033,67.900034...] 和超长。它需要以列表格式打印每个数字,小数点后只有四位数字。(%10.4)

我试过这个:

    System.out.printf("%10.4", num[0]); 

这适用于格式设置,但我似乎无法让整个数组列表正常工作。

我的数组是这样的:

    ArrayList<Number> num = new ArrayList<Number>();

    for (int i = 0; i<20; i++) {
        num.add(Math.random() *200 +1);
        }

它的工作方式与我所说的获取和列出数字的方式相同——但不是 "correct" 方式。

我还必须将数字保存到一个文件中,并且能够让用户为他们选择一个索引并告诉他们他们从文件中选择的数字,我也在努力解决这个问题。

任何帮助都会很棒!!!

[编辑] 这有效(来自 Ole V.V。):

        for (int i = 0; i<20; i++) {
        num.add(Math.random() *200 +1);
        System.out.printf("%10.4f%n", num.get(i));

[附加] **我必须在这里 post 并且不能提出新问题,因为有些混蛋对我投了反对票? **

我已将数组中的所有数字读入并保存到文本文件中(格式正确!)但现在我必须能够向用户询问索引,并能够找到根据该索引对象...但它不工作!

当数字不再是数组格式时(它们位于与列中的内容类似的列中),我不知道如何为变量分配索引。

您需要通过这个简单的技巧trim额外的数字。

 double number = Math.random()*200 + 1;
 number = (long)( number * 10000 );
 number = number / 10000;

这里有几个选项。首先,您可以像您已有的那样使用 for 循环:

    for (int i = 0; i < 20; i++) {
        System.out.printf("%10.4f%n", num.get(i));
    }

一个更简洁的选项是:

    num.forEach(n -> System.out.printf("%10.4f%n", n));

在这两种情况下,输出都像

  186.8143
  129.4201
  169.7405
  ...

您的格式字符串 %10.4 几乎是正确的。您需要添加 f 来格式化浮点数。我还在数字后面添加了 %n 作为换行符。在 Java num[i] 仅适用于数组,不适用于 ArrayList,您需要 num.get(i).