我有一个看起来像这样的程序的一部分。
for(int i=0;i<50;i++)
{
Random t = new Random();
// random integers in [0, 100]
System.out.println(t.nextInt(100));
}
我需要将最后一个值重定向到文本文件。我可以用任何方式打印控制台上的最后一个值吗?最后一个值,没有别的。
答案 0 :(得分:5)
更重要的是,一定不能在每次迭代时创建一个新的Random
实例。这完全破坏了发电机的统计特性。
要打印出最后一个值,请将其存储并打印到最后。
把这一切放在一起:
{ /*To stop t and n leaking into scope*/
Random t = new Random();
int n = 0;
for (int i=0; i < 50; ++i){ /*I prefer ++i as I'm an old-fashioned cat*/
n = t.nextInt(100); /*presumably you do something with this number*/
}
System.out.println(n);
}
答案 1 :(得分:2)
if(i == 49){
System.out.println(t.nextInt(100));
}
仅在i = 49
时打印第50次迭代的数字。你的所有问题似乎都要求了。显然必须放在for循环中。您可以在if语句中调整条件以适合您期望的行为。
同样已经指出了。你应该只将Random t
实例化一次并且在for循环之外。通过这种方式,您不会打破算法的随机性,并且您不必多次不必要地实例化对象。
答案 2 :(得分:1)
你可以在for块之上声明一个变量,并在每次循环运行时初始化它,并在for循环结束后使用它:
Random t = null;
for(int i=0;i<50;i++)
{
t = new Random();
// random integers in [0, 100]
System.out.println(t.nextInt(100));
}
if (t != null) {
// do write operation to text file here
}
答案 3 :(得分:0)
由于你有索引,试试这个:
for(int i=0;i<50;i++)
{
Random t = new Random();
// random integers in [0, 100]
if(i==49) {
System.out.println(t.nextInt(100));
}
}
答案 4 :(得分:0)
int last = -1;
for(int i=0;i<50;i++)
{
Random t = new Random();
// random integers in [0, 100]
last = t.nextInt(100);
//System.out.println(last);
}
// Now take "last" and do whatever you want with it.
doSomething(last);