Java String replaceAll方法对循环有不寻常的影响?

lei*_*ero 0 java string replace while-loop

我确信这是string.replaceAll()方法如何工作的产物,但是由于一些奇怪的原因,当你键入任何带有空格的东西时,它会使我的循环运行两次?

public class TestCode{



public static void main(String[] args) throws IOException{

    Scanner scan = new Scanner(System.in);
    String input = "";

    while(!input.equals("X")){
        System.out.println("Prompt user for input");
        input = scan.next().toUpperCase();
        calculatePolynomial(input);
    }       
}


public static void calculatePolynomial(String input){
    //Clean up entry removing spaces and extracting polynomial names
    String calculation = input.replaceAll("\\s", "");
    System.out.println(calculation);
}   
}
Run Code Online (Sandbox Code Playgroud)

想法是让代码运行...打印出消息,提示输入.然后处理输入并做一些事情.反复重复该过程,直到输入标记值"x".

但是当你输入包含空格的输入时,由于某种原因,它会运行循环,就像每个单词现在是单独的输入一样.因此,如果您输入三个单词,它只会运行循环三次而不是一次.

我只是希望用户的输入没有空格而且没有逻辑错误的噩梦.

rge*_*man 5

Scanner默认情况下,使用a时,会next()按空格标记输入.因此,如果用户输入由空格分隔的两个单词,则循环将运行两次.

要在用户的输入行中获取整个输入,请尝试使用该nextLine()方法.