生成唯一
我试图写在一个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());
}
}
}
有几个方面,这取决于您希望如何生成一个“随机”做数。
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一些核心的东西,如变量是如何工作的。咨询导师/老师/基本文本可能会帮助你很多。
我对Java很新,非常感谢你的全面回答 – rarayo55
- 要生成你需要使用Random类的随机数。
注 - random.nextFloat()如果要包括更大数目则需要相乘将只产生0.0和1之间的数它
您使用控制整数for循环不能被重新分配给一个浮动的环内
-
你并不需要把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());
}
但没有随机生成的数字,只是一些不会编译的循环。 – SomeJavaGuy