生成50个随机浮点数arylylist值唯一

时间:2016-12-15 14:05:39

标签: java arrays arraylist random

我试图编写在ArrayList中存储50个随机生成的浮点数的代码。使用常规for循环遍历值并删除任何小于0.5的值。然后使用for-each循环打印出剩余的值。

这是我的代码到目前为止,我不知道从哪里开始...

import java.util.ArrayList;

public class fiftyFloats {

    public static void main (String [] args) { 

        //create a reference for the array list 
        ArrayList <Float> vals; 

        //reserve space for it in memeory 
        vals = new ArrayList <Float> (50);

        for (int i = 0; i<vals.size(); i++){
            i = new Float
        }

        for (Integer atPos: vals) { 
            System.out.println(vals.toString()); 
        }
    }
}

4 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点取决于你想要如何生成&#34;随机&#34;数。

java.util.Random有一些可以使用的功能,包括&#34; nextFloat&#34;它返回浮点类型的0到1之间的随机值。

所以

ArrayList <Float> vals = new ArrayList<>();
Random rand = new Random();
for (int i = 0; i < 50; i++) {
     vals.add(rand.nextFloat());
}

然后,再次遍历列表并删除任何不符合标准的数字应该很容易。您不需要预先在ArrayList中预留50个点,这是使用它的一个好处,您可以动态添加它。

你的循环不会起作用。你已经定义了&#34;我&#34;作为循环代码中的整数,现在您正在尝试创建具有相同名称的浮点数。你可以使用&#34; i&#34;在你的循环中,但它将是&#34; i&#34;您在&#34; int i = 0;&#34;

指定的

总的来说,你似乎很新,并且不了解java的一些核心内容,比如变量的工作方式。咨询导师/教师/基本文本可能会对你有所帮助。

答案 1 :(得分:0)

  1. 要生成随机数,您需要使用Random类。
  2. 注意 - random.nextFloat()只会生成介于0.0和1之间的数字,如果您想要包含更大的数字,则需要将其相乘

    1. 用于控制for循环的整数不能重新分配给循环中的float

    2. 您不需要将arrayList.toString()放在循环中

      import java.util.ArrayList;
      import java.util.Random;
      
      public class fiftyFloats {
      
      public static void main(String[] args) {
      
      ArrayList<Float> vals = new ArrayList<Float>();
      
      Float randomNum;
      Random rand = new Random();
      for (int i = 0; i < 50; i++) {
          randomNum = rand.nextFloat();
          if (randomNum > 0.5) {
              vals.add(randomNum);
          }
      }
      
      System.out.println(vals.toString());
      
      }}
      

答案 2 :(得分:0)

由于您需要的浮动值在最小值和最大值之间不是引用,因此您可以使用纳米时间

示例:

List <Float> vals = new ArrayList <Float> (50);

for (int i = 0; i<vals.size(); i++){
    vals.add (System.current/100.0f);
}**

答案 3 :(得分:0)

我认为这就是你要在这里做的事情:

    //create a reference for the array list 
    ArrayList<Float> vals;

    //reserve space for it in memeory 
    vals = new ArrayList<Float>(50);

    Random rand = new Random();

    for (int i = 0; i < 50; i++) {
        vals.add(rand.nextFloat());
    }

    for (Float val : vals) {
        System.out.println(val.toString());
    }

原始代码中需要注意的一些事项:

    Float fl = new Float(2.2);

    //create a reference for the array list 
    ArrayList<Float> vals;

    // Here, you've set the _Capacity_, not the size.
    vals = new ArrayList<Float>(50); // vals.size() => 0

    // Based on above, you are essentially saying "never do these things"
    // -> for (int i = 0; i < 0; i++)
    for (int i = 0; i < vals.size(); i++) {

        // this, if a valid expression, would have an incompatible type
        // since i is of type int.

        // if you were to use this, you would need to use a constructor such as
        // new Float(1.2).

        i = new Float

    }

    // In this enhanced loop, you are assigning a value from ArrayList vals
    // to atPos, not the position. Since ArrayList is of type Float,
    // atPos is a Float.
    for (Integer atPos : vals) {
        System.out.println(vals.toString());

    }