java - 读取用户输入
问题描述
我对 Java 很陌生,我正在学习如何阅读用户输入的书籍教程。他们的代码是...
class Example {
public static void main(String args[]) throws java.io.IOException {
// System.out.println()
char ch;
System.out.print("Press a key followed by ENTER: ");
ch = (char) System.in.read();
System.out.println("Your key is: " + ch);
}
}
我试图尝试将用户输入读取为这样的整数......
class Example {
public static void main(String args[]) throws java.io.IOException {
int foo;
System.out.print("Enter a number: ");
foo = (int) System.in.read();
System.out.print("Your number was: " + foo);
}
}
但是,在输入例如数字 12 时,我得到的输出为 49。这是为什么呢?那本书教程是怎么起作用的呢?
编辑:当我在我的程序中输入“w”时,它仍然打印出 119。当然我认为 throws 事情正在处理这个问题?或者不是吗?
什么是扫描仪(刚刚在评论中看到)?
解决方案
System.in.read()
从输入流中读取数据的下一个字节。所以你只是1
从输入中读取,你正在打印 ASCII1
代码49
。如果要显示字符,则应将其读取为 char 或将其转换:
System.out.print("Your number was: " + (char) foo)
推荐阅读
- mysql - 从模式(MySQL)导入数据时打开的文件过多
- java - 我正在尝试访问禁用右键单击的安全网站。通过使用 selenium Xpath 不能点击元素
- c# - 当数据已经在调试中显示时,在运行时附加数据会引发空异常
- java - 有什么方法可以限制 POJO 中字符串的大小并在超出限制时抛出特定异常?
- ios - 如何在 EventKit(swift 4)中添加正确的事件时间?
- python-3.x - 如何减小直方图的宽度?
- excel - 根据另一列顺序对列进行排序
- docker-compose - docker-compose 卷未正确安装
- powershell - 将 pscustomobject 转换为 Json 格式
- python - Python - ValueError:解包的值太多(预期 2)