具有格式的ArrayList

时间:2017-12-04 05:11:32

标签: java arraylist filesaver.js

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

我试过了:

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

适用于格式化,但我似乎无法使整个arraylist工作。

我的阵列是这样的:

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

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

它的工作原理就像我说的那样获取和列出数字 - 但不是在&#34;正确的&#34;办法。

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

任何帮助都会很棒!!!

[编辑] 这起作用(来自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));

[追加] **我必须在这里发帖,不能提出新的问题,因为有些混蛋向我投降了吗? **

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

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

2 个答案:

答案 0 :(得分:0)

以下是几个选项。首先,您可以使用类似于您已有的for循环:

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

terser选项是:

    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)

答案 1 :(得分:-1)

你需要通过这个简单的技巧来修剪额外的数字。

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