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

时间:2013-07-12 20:47:38

标签: 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);
}   
}

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

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

我只希望用户的输入没有空格,没有逻辑错误的噩梦。

1 个答案:

答案 0 :(得分:5)

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

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