Search code examples
javaloopsif-statementstatements

I can't seem to work a way for my recommend program to track "Invalid Answers"


Here is the code:

do {
    System.out.println("Question #1:");

    System.out.println("What is your budget for purchasing the laptop?");

    System.out.println("A. >$500.00");
    System.out.println("B. $500.00 - $700.00");
    System.out.println("C. $700.00 - $1000.00");
    System.out.println("D. <$1000.00");
    questionArray [0] = myScanner.nextLine();
    if (!questionArray [0].equals ("A") || !questionArray [0].equals ("B") || !questionArray [0].equals ("C") || !questionArray [0].equals ("D")) {
      System.out.println("Invalid Entry");
    }
} while (!questionArray [0].equals ("A") || !questionArray [0].equals ("B") || !questionArray [0].equals ("C") || !!questionArray [0].equals ("D"));

Basically, even when I write a valid response (eg. "A") it still counts it as an invalid answer, and restarts the question. Any help would be greatly appreciated! :)


Solution

  • When the condition gets complex, it is a good idea to try and simplify the complexity by using variables to make code cleaner and easier to understand. For example:

        boolean validCondition = false;
    
        do {
            System.out.println("Question #1:");
            System.out.println("What is your budget for purchasing the laptop?");
    
            System.out.println("A. >$500.00");
            System.out.println("B. $500.00 - $700.00");
            System.out.println("C. $700.00 - $1000.00");
            System.out.println("D. <$1000.00");
    
            questionArray[0] = myScanner.nextLine();
    
            validCondition = questionArray[0].equals("A") || questionArray[0].equals("B") || questionArray[0].equals("C")
                    || questionArray[0].equals("D");
    
            if (!validCondition) {
                System.out.println("Invalid Entry");
            }
        } while (!validCondition);