2016-04-27 207 views
0

如果我從控制檯輸入空格, 控制檯將其打印爲字符串。但是,如果我直接做,它會正常工作。爲什麼?如何從控制檯輸入中將空格打印爲空格?在java中輸入來自控制檯的空白

public static void main(String[] args) { 

    Scanner sc = new Scanner(System.in); 
    System.out.print("Input Whitespace :"); 
    String ss = sc.nextLine();//input whitespace from console 
    String st ="\n \t";//input whitespace directly 
    System.out.println("print whitespace direcly :"+st+"print whitespace from console : "+ss); 

} 

輸入:輸入空格:\ n \ t

輸出:打印空白direcly:從控制檯 打印空白:\ n \ t

+0

我直接調用它:String st =「\ n \ t」; –

+0

你輸入的\ n不是一個有效的空格,它只是一個反斜槓,而一個「n」沒有任何意義。這同樣適用於你的輸入'\ t'。 – Tom

+0

如果它不是有效的空白,我怎樣才能從控制檯輸入有效的空白? –

回答

1

是的,現在它的工作:

ss=ss.replace("\n", "\\n"); 
    ss=ss.replace("\t", "\\t"); 
    ss=ss.replace("\f", "\\f"); 
    ss=ss.replace("\r", "\\r"); 
    ss=ss.replace("\\n", "\n"); 
    ss=ss.replace("\\t", "\t"); 
    ss=ss.replace("\\f", "\f"); 
    ss=ss.replace("\\r", "\r"); 
+0

你能解釋前四行的目的是什麼嗎? 'ss'不包含這些空格,所以你不需要替換它們。 – Tom

+0

正如我想用\ n,\ t,\ f,\ r作爲空格。所以,我必須這樣做。否則,空格(新行,製表符)不能僅打印\ n \ t \ r \ f正在打印。 –

+0

@tom。我認爲你無法理解我的問題。 –