我确信这是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”。
但是当你输入包含空格的输入时,由于某种原因,它会运行循环,好像每个单词现在都是单独的输入。因此,如果您输入三个单词,它只会运行循环三次而不是一次。
我只希望用户的输入没有空格,没有逻辑错误的噩梦。
答案 0 :(得分:5)
使用Scanner
时,默认情况下,next()
会按空格标记输入。因此,如果用户输入由空格分隔的两个单词,则循环将运行两次。
要在用户的输入行中获取整个输入,请尝试使用nextLine()
方法。