我最近遇到了这个令人沮丧的问题,扫描程序完全忽略了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)
谢谢 :)
键入"no"时,else if块next()再次调用,要求输入更多内容.
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)