我正在尝试编写代码,该代码存储50个随机生成的浮点编号。使用常规的循环循环循环浏览值并删除小于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之间的随机值。
so
ArrayList <Float> vals = new ArrayList<>();
Random rand = new Random();
for (int i = 0; i < 50; i++) {
vals.add(rand.nextFloat());
}
那么,再次循环浏览列表并删除不符合您的标准的任何数字应该很容易。您无需在阵列列表中预先保留50个景点,这是使用它的好处之一,您可以动态地添加它。
您的循环是行不通的。您已经将" i"定义为循环代码中的整数,现在您正在尝试创建具有相同名称的浮子。您可以在循环中使用" i",但它将是您在" int i = 0;"
上指定的" i"。总的来说,您似乎很新,并且不了解有关Java的核心内容,例如变量的工作方式。咨询导师/老师/基本文本可能会对您有很大帮助。
- 要生成一个随机数,您需要使用随机类。
note - 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()); }}
我认为这是您在这里尝试做的:
//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());
}
,由于您需要的浮点值不是在min和max之间引用,因此您可以使用Nano Time
示例:
List <Float> vals = new ArrayList <Float> (50);
for (int i = 0; i<vals.size(); i++){
vals.add (System.current/100.0f);
}**