扫描仪忽略某些输入(System.in)

Cod*_*de0 0 java input stream

我最近遇到了这个令人沮丧的问题,扫描程序完全忽略了System.in输入流中的一些输入.这是一个例子:

Do you want a cookie? Yes or no.
Run Code Online (Sandbox Code Playgroud)

现在,我输入是:

yes
Run Code Online (Sandbox Code Playgroud)

结果:

Cookie for you!
Run Code Online (Sandbox Code Playgroud)

现在,如果我说不:

no
no
Run Code Online (Sandbox Code Playgroud)

结果:

No Cookie for you.
Run Code Online (Sandbox Code Playgroud)

得到它?如果我说是,那就接受它.如果我说不,我必须输入2次.

如果你真的需要一些代码.这里有一些:)

public static void main(String[] paramArgs){
    MainEW sMain = new MainEW();
    Scanner s = sMain.scanner;

    System.out.println("Enter a file path.");
    System.out.println("Example: /Users/Some_User/Desktop/Some_Folder");
    String defPath = s.next();

    System.out.println("Enter a name for the file.");
    String defName = s.next() + ".txt";

    System.out.println("Now, enter what you want to write to the file.");
    s.nextLine();
    String defText = s.nextLine();

    System.out.println("Do you want to create a new file? Yes or No");

    if (s.next().equalsIgnoreCase("yes")) {
        WriterEW writer = new WriterEW(defPath, defName, defText, true);
        return;
    } else if (s.next().equalsIgnoreCase("no")) {
        WriterEW writer = new WriterEW(defPath, defName, defText, false);
        return;
    } else {
        System.out.println("Invalid input.");
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

rge*_*man 6

键入"no"时,else ifnext()再次调用,要求输入更多内容.

s.next()在开始您的if条件之前,只需调用一次,而不是在每种情况下调用.

String response = s.next();
if(response.equalsIgnoreCase("yes")){
    WriterEW writer = new WriterEW(defPath, defName, defText, true);
    return;
}else if(response.equalsIgnoreCase("no")){
Run Code Online (Sandbox Code Playgroud)