0

我确信这是 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”。

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

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

4

1 回答 1

5

使用 aScanner时,默认情况下,next()通过空格对输入进行标记。因此,如果用户输入两个由空格分隔的单词,您的循环将运行两次。

要获取用户输入行中的全部输入,请尝试改用该nextLine()方法。

于 2013-07-12T20:50:24.563 回答