我试图编写在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());
}
}
}
答案 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)
注意 - random.nextFloat()只会生成介于0.0和1之间的数字,如果您想要包含更大的数字,则需要将其相乘
用于控制for循环的整数不能重新分配给循环中的float
您不需要将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());
}