are*_*tai 0 java random data-structures
我有一个简单的问题.我尝试从容器RandomList中获取随机值.它适用于String和int,但不能解决双重错误以及如何修复它?
谢谢
import java.util.*;
public class RandomList<T> {
private ArrayList<T> storage = new ArrayList<T>();
private Random rand = new Random(47);
public void add(T item) { storage.add(item); }
public T select() {
return storage.get(rand.nextInt(storage.size()));
}
public static void main(String[] args) {
RandomList<String> rs = new RandomList<String>();
RandomList<Integer> rs1 = new RandomList<Integer>();
RandomList<Double> rs2 = new RandomList<Double>();
double w = 1.23;
for(String s: ("The quick brown fox jumped over " +
"the lazy brown dog").split(" "))
rs.add(s);
for(int i = 0; i < 11; i++)
System.out.print(rs.select() + " ");
for (int i = 0; i < 5; i++)
rs1.add(i);
for (int i = 0; i < 5; i++)
System.out.print(rs1.select() + " ");
for (int i = 0; i < 5; i++)
w = (double)i/5;
rs2.add(w);
for (int i = 0; i < 5; i++)
System.out.print(rs2.select() + " ");
}
}
Run Code Online (Sandbox Code Playgroud)
输出是棕色的狐狸快速快速狗棕色棕色懒棕色3 0 3 1 1 0.8 0.8 0.8 0.8 0.8,所以它适用于字符串和int,但不适用于double(每次都相同的值).
你在for循环中没有任何花括号,你添加了一堆双精度数,所以它不执行两个缩进语句.因此,您只需添加一个数字,而不是五个.尝试添加缺少的大括号,看看是否能解决问题.
为了将来的参考,如果你在for循环中声明了w作为局部变量,那么根本就没有编译,因为向随机列表添加w的语句将引用一个超出范围的变量.将变量范围限定在他们需要的位置可以帮助防止这样的错误.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |