我的Java學習-時間差的計算
阿新 • • 發佈:2018-12-17
最近看到有個題目,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; } } }