生成唯一

问题描述:

我试图写在一个ArrayList存储50个随机产生的浮点数代码50随机浮点数组列表值。使用常规的for-loop循环查看值并删除小于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

但没有随机生成的数字,只是一些不会编译的循环。 – SomeJavaGuy

有几个方面,这取决于您希望如何生成一个“随机”做数。

java.util.Random中具有一定的功能,可以被使用,包括“nextFloat”,其0和浮子类型的1之间返回一个随机值。

所以

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

然后,它应该是很容易遍历列表一次并移除任何数量不符合你的标准。你并不需要预留50点前面的一个ArrayList,这是使用它的好处之一,你可以动态地添加到它。

你的环路是将无法正常工作。您已经在循环代码中将“i”定义为整数,现在您正在尝试创建一个具有相同名称的浮点数。你可以在你的循环中使用“i”,但它将是你在“int i = 0;”中指定的“i”。

整体看起来,就像你很新,不明白关于Java一些核心的东西,如变量是如何工作的。咨询导师/老师/基本文本可能会帮助你很多。

+0

我对Java很新,非常感谢你的全面回答 – rarayo55

  1. 要生成你需要使用Random类的随机数。

- random.nextFloat()如果要包括更大数目则需要相乘将只产生0.0和1之间的数它

  1. 您使用控制整数for循环不能被重新分配给一个浮动的环内

  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()); 
    
    }} 
    
开始=>

由于浮点值,你需要的最小值和最大值,那么你可以使用纳米时间之间不报价

例子:

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

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

我认为这是你正在尝试做的在这里:

//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()); 
    } 

有些事情要在你的O指出riginal代码:

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()); 

    }