用Split函數可以去除輸入一個字串中的空格,並且一般都是將它儲存在一個字串數組之中
例如:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s=in.nextLine(); //如果我輸入:0 1 2 3 4 String[] str=s.split(" "); System.out.println(s); System.out.println(str[3]); } }
輸出結果是:
0 1 2 3 4
3
可是會出現這種情況,如果我輸入的是0 1 2 3 4,在2和3之間有3個的空格,那還會有用嗎。
結果輸出是:
0 1 2 (空格) 3 4
(空格)
也就是沒有輸出str[3],至少看上去是這樣的,然後我分析得出結論,其實是這樣的,
舉個例子,我輸入2(空)(空)(空)3,執行Split函數後得到的String str數組
是str[0]=2 ,str[1]=(空),str[2]=(空),str[3]=3
也就是說,Split函數在執行多空格判斷時,會只將第一個空格忽略,其餘空格都放入數組,直到遇到非空格數3,然後後面的情況重複,只有一個空格,情況是結果是理想的,多個空格,又是重複如此
解決方案:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s=in.nextLine(); String[] str=s.split("\\s+ "); //改動這裡 System.out.println(s); System.out.println(str[3]); } }
利用Regex,就可以實現我們理想的結果,
例如:輸入2(空)(空)(空)3
結果:str[0]=2
str[1]=3