Я пытаюсь выполнить цикл через всю программу, если пользователь вводит «y» или «Y», когда они запрашиваются в конце программы, но я получаю ошибку «не удается найти символ - ответ переменной», поскольку переменная Я объявил, что находится внутри цикла do-while, поэтому я полагаю, что не могу использовать его в состоянии цикла do-while. Есть ли способ обойти эту проблему и по-прежнему иметь возможность выполнять программу в цикле, если пользователь вводит «y» или «Y»? Это все в основном методе, а getFileRunStats - это метод, который содержит все остальные методы из программы.

Вот соответствующий код:

public static void main(String[] args) throws IOException {
    System.out.println("A program to analyze home field advantage in sports.");
    System.out.println();        
    Scanner keyboard = new Scanner(System.in);

do{   
    getFileRunStats(keyboard);

    System.out.println("Do you want to check another data set?");
    System.out.print("Enter Y or y for to analyze another file, anything else to quit: ");
    String response = keyboard.nextLine();
}while(response == "Y" || response == "y");


}
0
Hector 25 Окт 2015 в 02:59

3 ответа

Лучший ответ

Вы можете просто удалить оператор и добавить его в условие цикла.

do {
} while (keyboard.nextLine().equalsIgnoreCase("y"));
2
ergonaut 25 Окт 2015 в 00:16

Просто объявите переменную response вне цикла do-while, например:

String reponse = null;
do{   
    getFileRunStats(keyboard);

    System.out.println("Do you want to check another data set?");
    System.out.print("Enter Y or y for to analyze another file, anything else to quit: ");
    response = keyboard.nextLine();
}while(response == "Y" || response == "y");


}
-1
Kenny Nguyen 25 Окт 2015 в 01:16

Просто обеспечивая более расширяемый подход к вашей проблеме, потому что он позволяет вам динамически добавлять дополнительные параметры в вашу программу в будущем.

public static void main(String[] args) {
    System.out.println("A program to analyze home field advantage in sports.");
    System.out.println();
    Scanner keyboard = new Scanner(System.in);

    boolean quit = false;
    do{
        System.out.println("Do you want to check another data set?");
        System.out.print("Enter Y or y for to analyze another file ");
        System.out.print("Enter X to do X");
        System.out.print("Enter Z to do Z");
        String response = getUserInput(keyboard);

        if (response.equalsIgnoreCase("X"))
            doX();
        else if (response.equalsIgnoreCase("Y"))
            doY();
        else if (response.equalsIgnoreCase("Z"))
            doZ();
        else
            quit = true;

    }while(!quit);
}

private static String getUserInput(Scanner scanner) {
    return scanner.nextLine();
}

private static void doX() {
    System.out.println("X");
}

private static void doY() {
    System.out.println("Y");
}

private static void doZ() {
    System.out.println("Z");
}

}

0
Samuel Toh 25 Окт 2015 в 00:32