最近看到有个题目,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;
}
}
}