4 回答
TA贡献1966条经验 获得超4个赞
因为终端正在等待某个值,所以在这一行中:
Scanner scan = new Scanner(System.in); int seconds = scan.nextInt();
基本上,您正在创建一个 Scanner 对象,并声明一个 int 变量等待一个值(在本例中是下一个整数)来执行某些操作。
只需在终端中输入一些整数,它就应该可以正常工作。
TA贡献1906条经验 获得超3个赞
该解决方案已经存在于其他答案中,但为什么是InputMismatchException
这个答案的目的。
从文档中,
例如,以下代码允许用户从 System.in 读取数字:
Scanner sc = new Scanner(System.in); int i = sc.nextInt();
为了nextInt()
公共 int nextInt()
将输入的下一个标记扫描为 int。
抛出:
InputMismatchException
- 如果下一个标记与 Integer 正则表达式不匹配,或者超出范围
这里的“clear”不匹配Integer的正则表达式。
由于您没有向nextInt()
方法传递任何基数,因此它预计输入只有 0-9(十进制数字系统 - 默认为基数 10)。如果是的话nextInt(16)
,它将接受任何十六进制(0-F,基数 16)数字等。
值得注意的是,在另一种情况下,您可以获得相同的异常,如果input > Integer.MAX_VALUE
.
TA贡献1862条经验 获得超7个赞
在终端中,扫描仪正在等待用户输入 int 类型,您需要在终端中输入秒。
显示错误是因为您输入的是 String 类型值,但扫描仪需要 int 类型。
希望这能解决这个问题。
TA贡献1854条经验 获得超8个赞
您需要提示用户输入以秒为单位的时间,以便您的扫描仪实际上可以为您的秒数输入一些内容。做这样的事情:
System.out.println("Enter seconds to convert"); int seconds = scan.nextInt();
添加回答
举报