Home > Software design >  How do I time the user input from a Scanner in Java, and place that input into a category based on c
How do I time the user input from a Scanner in Java, and place that input into a category based on c

Time:02-23

I want the user to answer a question, but their input is timed from the prompt to when they press enter. Then based on how long they took, I want that question and answer pair to be stored somewhere.

Question1: What is the powerhouse of the cell? Answer: Mitochondria The answer is correct, and user took 6 seconds to press enter

Store Question1 into deck A (because all t<10 seconds should be in deck A)

Question2:What is inflammation in the cardiac muscle called? Answer: Myocarditis The answer is correct, and user took 15 seconds to press enter

Store Question2 into deck C. (because all t >=15 seconds but less than 20 should be in deck C)

I can program everything around this problem, I just can't seem to be able to time and store the user input based on that time. Any assistance would be great, thanks!

CodePudding user response:

I think you simply can save the time before and after you read the user input. I created a small example for one of your questions:

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);  // Create a Scanner object
        
        System.out.println("What is the powerhouse of the cell?"); // First question

        long startTime = System.currentTimeMillis(); // Save start time
        String answer = scanner.nextLine();  // Read user input
        long endTime = System.currentTimeMillis(); // Save time after enter
        long questionTime = (endTime - startTime) / 1000; // Calculate difference and convert to seconds

        if (answer.equals("Mitochondria")) { // Check if answer is correct and print output
            System.out.println("The answer is correct, and user took "   questionTime   " seconds to press enter");
        } else {
            System.out.println("The answer is wrong, and user took "   questionTime   " seconds to press enter");
        }
    }
}

Console log:

What is the powerhouse of the cell?
Mitochondria
The answer is correct, and user took 3 seconds to press enter

CodePudding user response:

  1. Right before asking, capture the current time using Instant.now();

  2. Right after they press enter, capture the then current time using Instant.now();

  3. Use Duration::between to get the duration between those two instants.

  4. Format the Duration to the desired format, e.g.

    String.format("%ss and %sms", d.getSeconds(), d.toMillisPart())
    
  •  Tags:  
  • java
  • Related