Java 如何使反应时间在while循环中工作
我正在编写一个项目,计算用户写答案所需的时间。因此,我将显示一个问题,您将回答它。之后,我将显示您解决该问题所需的时间 但是当我将变量放入while循环时,反应时间不起作用 代码如下:Java 如何使反应时间在while循环中工作,java,Java,我正在编写一个项目,计算用户写答案所需的时间。因此,我将显示一个问题,您将回答它。之后,我将显示您解决该问题所需的时间 但是当我将变量放入while循环时,反应时间不起作用 代码如下: long startTime=System.currentTimeMillis(); long-endTime=System.currentTimeMillis(); 长反应时间=结束时间-开始时间; //Q1 系统输出打印项次(“Q1”); while(true){ System.out.println(“什么
long startTime=System.currentTimeMillis();
long-endTime=System.currentTimeMillis();
长反应时间=结束时间-开始时间;
//Q1
系统输出打印项次(“Q1”);
while(true){
System.out.println(“什么是1+1:”);
int ans=scanner.nextInt();
如果(ans==2){
系统输出打印项次(“正确”);
系统输出打印项次(反应时间+“毫秒”);
打破
}否则{
System.out.println(“不正确,请重试”);
}
}
问题在于,你的结束时间和开始时间基本上是相等的,因为你在提问之前就把它们都拿走了
要解决这个问题,只要用户的答案正确,就可以计算出所花的时间
//在用户回答您的问题之前,先计算一次开始时间
long startTime=System.currentTimeMillis();
//Q1
系统输出打印项次(“Q1”);
while(true){
System.out.println(“什么是1+1:”);
int ans=scanner.nextInt();
如果(ans==2){
系统输出打印项次(“正确”);
//仅当用户的答案正确时,才在此处使用结束时间
long-endTime=System.currentTimeMillis();
长反应时间=结束时间-开始时间;
系统输出打印项次(反应时间+“毫秒”);
}否则{
System.out.println(“不正确,请重试”);
}
}
公共课堂调查问卷{
公共静态void main(字符串…参数){
整数=10;
扫描仪扫描=新扫描仪(System.in);
对于(int i=0;i
当找到正确答案时,当然应该计算结束时间。你说的“但是当我把变量放入while循环时,反应时间不起作用”是什么意思?预期的反应时间是用户找到正确答案所需的时间,还是从问题提示到回答条目所需的时间?@vsfDawg它是用户找到正确答案所需的时间answer@maloomeister是的,我在看了别人的答案后解决了我的问题。谢谢大家。
public class Questionnaire {
public static void main(String... args) {
int totalQuestions = 10;
Scanner scan = new Scanner(System.in);
for (int i = 0; i < totalQuestions; i++) {
String title = "What is 1+1: ";
String correctAnswer = "2";
long reactionTime = askQuestionAndGetReactionTimeMs(scan, title, correctAnswer);
System.out.format("Reaction time: %dms\n\n", reactionTime);
}
}
private static long askQuestionAndGetReactionTimeMs(Scanner scan, String title, String correctAnswer) {
long beginTime = System.currentTimeMillis();
while (true) {
System.out.print(title);
String answer = scan.next();
if(correctAnswer.equals(answer))
return System.currentTimeMillis() - beginTime;
System.out.println("incorrect please try again")
}
}
}