我相信這是string.replaceAll()方法工作方式的產物,但是出於某種奇怪的原因,當您在其中輸入任何空格時,會使其循環運行兩次?Java 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」。
但是,當你鍵入包含空格的輸入時,出於某種原因,它運行循環,就好像每個單詞現在是單獨的輸入一樣。所以如果你輸入三個單詞,它只會運行三次而不是一次。
我只想讓用戶的輸入沒有空格,沒有邏輯錯誤的噩夢。
您正在使用'掃描儀',並使用'next()' - 令牌*是*空格(實際上是*空白*,其中包括EOL字符)。 –
'Scanner.next()'獲取用戶輸入,直到下一個空格或下一個換行符。我不確定你的預期。 –
嘗試註釋calculatePolynomial函數的主體,以便它「根本不做任何事情」。結果是否按照您當前的假設行事? –