1. 程式人生 > >我的Java學習-時間差的計算

我的Java學習-時間差的計算

最近看到有個題目,QuickHit專案: 玩家根據控制檯的輸出來輸入相同字元,Enter鍵確認 遊戲根據玩家的輸入來判斷:如果輸入錯誤,遊戲結束;如果遊戲輸入正確但是超時,遊戲結束;如果輸入正確沒有超時,重複上面步驟。 這裡有個問題就是判斷超時,怎麼判斷當前輸入的結束時間?網上看到各種資料,發現java裡面有提供相應的方法,就是

new Date().getTime();

在輸入字元的前後都用這個方法,就可以得到輸入的總時間了。

long time1 = new Date().getTime();
String input = sc.nextLine();
long time2 = new Date().getTime();
long temptime = (time2 - time1) / 1000;

這裡的temptime就是輸入前後的時間差,用秒來表示。 全部程式碼如下

import java.util.Date;
import java.util.Random;
import java.util.Scanner;

class ContString{    //從固定的字串裡面隨機擷取長度number的字串
    private int number;
    private String allstring;
    public ContString(int number) {
        this.number = number;
        this.allstring = "helloeveryone,thisisatestprogramnicetomeetyoueveryone";
    }
    
    public String randomString(){
        Random rand = new Random();
        int tmp = rand.nextInt(allstring.length() - number);    //產生一個隨機整數
        String out = allstring.substring(tmp,  tmp + number);
        return out;
    }
}

public class Test{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int number = 6;
        int count = 1;  
        int limittime = 5;
        
        while(count < 7){
            String target = new ContString(number).randomString();
            System.out.println( target
                        + "  :請輸入與上面相同的字串!");
            long time1 = new Date().getTime();
            String input = sc.nextLine();
            long time2 = new Date().getTime();
            long temptime = (time2 - time1) / 1000;
            
            if( input.equals(target) && temptime < limittime){
                System.out.println("輸入正確!繼續努力:");
            }else if( input.equals(target) ){
                System.out.println("輸入正確,但是超時結束。用時:" + temptime + "秒");
                break;
            }else{
                System.out.println("輸入錯誤,遊戲結束!");
                break;
            }   
            count ++;
            number += 2;
            limittime += 1;
        }    
    }
}