我正在尝试运行一个程序,然后询问用户是否要再次运行.它可以工作,但是循环第二次失败


public class CaesarCipher {
    public static void main(String[] args) {
        String answer = "";
        do {
            String Phrase = "";
            Scanner scan = new Scanner(System.in);
            System.out.println("Type in a phrase");
            String phrase = scan.nextLine();
            System.out.println("Your Phrase was " + phrase);
            for (int i = 0; i < phrase.length(); i++) {
                char charAt = phrase.charAt(i);
                System.out.println("The " + (i) + " character is " + charAt);
            }
            System.out.print("Would you like to try again? (Yes/No).");
            answer = scan.next();
            scan.close();
        } while (answer.equals("Yes"));
        System.out.println("Thank you, have a nice day.");
    }
}

我可以让它通过,甚至在用户响应"否"时正确结束,但每次我说是并重新运行它时。程序在请求另一个输入("输入短语"(后崩溃。它说扫描仪没有任何东西可以扫描,即使它没有给我机会输入任何东西。

你的问题很简单,你不必调用scan.close((。实际上,您可以从 Scanner 类定义中读取:"当扫描仪关闭时,如果源实现了可关闭接口,它将关闭其输入源。">

public class CaesarCipher {

public static void main(String[] args( {

String answer = "";

do {
    String Phrase = "";
    Scanner scan = new Scanner(System.in);
    System.out.println("Type in a phrase");
    String phrase = scan.nextLine();
    System.out.println("Your Phrase was " + phrase);
    for (int i = 0; i < phrase.length(); i++) {
        char charAt = phrase.charAt(i);
        System.out.println("The " + (i) + " character is " + charAt);
    }
    System.out.print("Would you like to try again? (Yes/No).");
    answer = scan.next();
} while (answer.equals("Yes"));
System.out.println("Thank you, have a nice day.");

}

最新更新