Java 如何使反应时间在while循环中工作

Java 如何使反应时间在while循环中工作,java,Java,我正在编写一个项目,计算用户写答案所需的时间。因此,我将显示一个问题,您将回答它。之后,我将显示您解决该问题所需的时间 但是当我将变量放入while循环时,反应时间不起作用 代码如下: long startTime=System.currentTimeMillis(); long-endTime=System.currentTimeMillis(); 长反应时间=结束时间-开始时间; //Q1 系统输出打印项次(“Q1”); while(true){ System.out.println(“什么

我正在编写一个项目,计算用户写答案所需的时间。因此,我将显示一个问题,您将回答它。之后,我将显示您解决该问题所需的时间

但是当我将变量放入while循环时,反应时间不起作用

代码如下:

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")
        }
    }
}