2016-12-15 27 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"のようなユーザタイプを持つことができましたが、私はこのようにしたいと思います。

ありがとうございます。私はScannerクラスは、デフォルトではUTF-8でエンコードされたテキストを読み込んで信じていませんので、お使いのスキャナのインスタンス化はと交換

+0

可能な重複[読み取り/特殊文字を含む.txtファイルを書く](http://stackoverflow.com/questions/4597749/read-write-txt-file-with-special-characters) – VGR

+0

問題はおそらくあなたのコードではありません。その文字を表示できないコンソールに出力が出力されていることです。 – VGR

+0

@VGR 2番目の例では、コンソールにその文字が表示されます。 –

答えて

0

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のバージョンを使用していますか? CharsetクラスがJava 7で追加されました:https://docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html – marknorkin

+0

NetBeansがJava 7を使用していると思います.Java Log 7では、Java、それは1.7.0と言います。 –