2016-12-15 32 views
0

對不起,如果這很明顯,但我是Java的新手。我無法找到任何答案(至少不是我能理解的)。我想要完成的是,當用戶輸入平方根符號(√)時,包含所述符號的字符串。但是,當我打印它時,它只是一個問號。這裏是我的代碼:如何獲取掃描的字符串以包含特殊字符?

Scanner sc = new Scanner(System.in); 
String s = sc.next(); 
System.out.println(s.substring(0,1)); 

我猜測它與掃描儀有關,因爲當我像這樣設置它時,它工作正常。

String s = "√"; 
System.out.println(s.substring(0,1)); 

有沒有一些(最好是簡單的)方法來完成這個?我的目標不是打印他們輸入的字符,而是將其輸入爲。萬一有人好奇。我目前正在研究一個帶有幾個函數的簡單計算器(包括平方根)。顯然,我可以讓用戶輸入類似「sqrt」的內容,但我寧願這樣做。

預先感謝您。

+0

的可能的複製[讀/寫有特殊字符的.txt文件(http://stackoverflow.com/questions/4597749/read-write-txt-file-with-special-characters) – VGR

+0

這個問題可能不是你的代碼;這是你的輸出被打印在無法顯示該字符的控制檯中。 – VGR

+0

@VGR我的控制檯在我的第二個例子中顯示那個角色。 –

回答

0

我不認爲掃描儀類讀取默認爲UTF-8編碼的文本,所以將其替換您的掃描儀實例:

Scanner sc = new Scanner(System.in, "utf-8"); 
+0

出於好奇,「utf-8」到底做了什麼?此外,它仍然打印一個問號。 –

+0

@JavaNewbie UTF-8是一種字符編碼。請參閱:https://en.wikipedia.org/wiki/UTF-8 – marknorkin

0

看來你輸入的字符集不是UTF-8。試試這個:

Scanner s = new Scanner(new InputStreamReader(System.in,Charset.defaultCharset())); 
+0

是否有我需要的任何進口產品? InputStreamReader和Charset都會說「找不到符號」。 –

+0

@JavaNewbie你在使用什麼版本的java? Java 7中添加了Charset類:https://docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html – marknorkin

+0

我相信NetBeans正在使用Java 7.在IDE Log,Java,它說1.7.0。 –

相關問題