【问题标题】:How can I get scanned string to contain special characters?如何获取扫描字符串以包含特殊字符?
【发布时间】:2016-12-16 00:34:35
【问题描述】:

对不起,如果这很明显,但我是 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”的内容,但我更愿意这样做。

提前谢谢你。

【问题讨论】:

  • 问题可能不是你的代码;那是您的输出正在无法显示该字符的控制台中打印。
  • @VGR 我的控制台在我的第二个示例中显示该字符。
  • 糟糕,我看错了。我的错。

标签: java


【解决方案1】:

我不相信 Scanner 类默认读取 UTF-8 编码的文本,因此请将您的扫描仪实例替换为:

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

【讨论】:

  • 出于好奇,“utf-8”究竟是做什么的?此外,它仍然会打印一个问号。
  • @JavaNewbie UTF-8 是一种字符编码。见:en.wikipedia.org/wiki/UTF-8
【解决方案2】:

您的输入字符集似乎不是 UTF-8。试试这个:

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

【讨论】:

  • 我需要进口吗? InputStreamReader 和 Charset 都说“找不到符号”。
  • @JavaNewbie 你用的是什么版本的java? Java 7 中添加了字符集类:docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html
  • 我相信 NetBeans 使用的是 Java 7。在 Java 的 IDE Log 下,它显示的是 1.7.0。
  • @JavaNewbie 好的,可能是 IDE 问题。尝试使用完全限定的类名,例如java.nio.charset.Charset.defaultCharset()
  • 解决了“找不到符号”错误,但结果和之前一样:一个问号。
猜你喜欢
  • 2020-08-26
  • 1970-01-01
  • 2020-12-25
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多