创建一个定时应用程序

时间:2013-10-06 18:28:20

标签: java time long-integer

我创建了一个简单的游戏,要求你在一定的转弯量内猜出一个数字(例如10)。然而,这使得很容易被击败。我需要帮助的是如何跟踪游戏的持续时间。

这是我到目前为止所想到的(减去游戏逻辑),但它似乎没有起作用

Random ranNum = new Random();   
double input;   // The input
long startTime; // The time the game started
long curTime;   // The time the game ended

    double randNum = ranNum.nextInt(100);

while (curTime > 1000){
            curTime = System.currentTimeMillis();
            input = TextIO.getlnDouble();

            if (input = Math.abs(randNum)){
                System.out.println("You got the correct answer");

            }   // End if statement

            else {
                System.out.println("You did not have the correct answer");
                System.out.println("The number was" + randNum + ".");

            }   // End else statement

        } // End while statement

2 个答案:

答案 0 :(得分:0)

你没有使用startTime吗?

long startTime = System.currentTimeMillis();

currTime = System.currentTimeMillis() - startTime

现在currTime将具有以毫秒为单位的时间差。

答案 1 :(得分:0)

您必须在循环开始之前获取当前时间戳:

startTime = System.currentTimeMillis(); //get timestamp

//the condition is waaaay off, basically equals to while (true) - more on that later
while (curTime > 1000){
        input = TextIO.getlnDouble();

        if (input = Math.abs(randNum)){
            System.out.println("You got the correct answer");

        }   // End if statement

        else {
            System.out.println("You did not have the correct answer");
            System.out.println("The number was" + randNum + ".");

        }   // End else statement

    } // End while statement

curTime = System.currentTimeMillis(); //get timestamp again

System.out.println("Game took " + ((curTime-startTime)/1000) + " seconds");

来自System课程的文档:

  

public static long currentTimeMillis()

     

以毫秒为单位返回当前时间。请注意,虽然返回值的时间单位是毫秒,但值的粒度取决于底层操作系统,并且可能更大。例如,许多操作系统以几十毫秒为单位测量时间。

     

有关“计算机时间”与协调世界时(UTC)之间可能出现的轻微差异的讨论,请参阅类日期说明。

     

<强>返回:

     

当前时间与1970年1月1日午夜时间之间的差异,以毫秒为单位。

所以为了获得游戏的持续时间,你必须采取两个时间戳,并从后者中提取后者......

此外,while循环条件是关闭...这

while (curTime > 1000){

基本上是true ...... 1970年1月1日00:00:00到00:00:01只会出现错误

你可能会有这样的事情:

while(curTime-startTime > 10000) { //remember, value is ms!
   //...loop content
   curTime = System.currentTimeInMillis(); //update timestamp
}

但它不会让游戏在10秒后完全结束。如果你想限制游戏可以持续多长时间,这是一种不同的cookie - 你必须有另一个线程才能完成...