需要从n个数字的输出中读取最后一个值

时间:2014-12-08 14:55:34

标签: java

我有一个看起来像这样的程序的一部分。

for(int i=0;i<50;i++)
{
   Random t = new Random();

// random integers in [0, 100]
  System.out.println(t.nextInt(100));
}

我需要将最后一个值重定向到文本文件。我可以用任何方式打印控制台上的最后一个值吗?最后一个值,没有别的。

5 个答案:

答案 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);