为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这会引发错误/根本不运行?

为什么这会引发错误/根本不运行?

当年话下 2023-12-10 09:51:34
我在 VS code 中运行它,并在安装了正确的 JDK 的情况下通过终端进行编译和运行,但似乎没有任何东西可以运行,它只是变成空白,然后我输入“clear”并抛出不匹配异常。有人可以解释为什么吗?谢谢 :)import java.util.Scanner;class realTime {    public static void Time(int seconds) {        int min = 0, hours = 0;        min = (int)seconds / 60;        hours = (int)seconds / 3600;        System.out.println("Hours: " + hours);        System.out.println("Minutes: " + min);    }    public static void main(String[] args) {        Scanner scan = new Scanner(System.in);        int seconds = scan.nextInt();        Time(seconds);    }}我知道它不会正确计算分钟和小时,我只是写下代码来测试它是否运行。
查看完整描述

4 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

因为终端正在等待某个值,所以在这一行中:

Scanner scan = new Scanner(System.in);
int seconds = scan.nextInt();

基本上,您正在创建一个 Scanner 对象,并声明一个 int 变量等待一个值(在本例中是下一个整数)来执行某些操作。

只需在终端中输入一些整数,它就应该可以正常工作。


查看完整回答
反对 回复 2023-12-10
?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

该解决方案已经存在于其他答案中,但为什么是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.


查看完整回答
反对 回复 2023-12-10
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

在终端中,扫描仪正在等待用户输入 int 类型,您需要在终端中输入秒。

显示错误是因为您输入的是 String 类型值,但扫描仪需要 int 类型。

希望这能解决这个问题。


查看完整回答
反对 回复 2023-12-10
?
哔哔one

TA贡献1854条经验 获得超8个赞

您需要提示用户输入以秒为单位的时间,以便您的扫描仪实际上可以为您的秒数输入一些内容。做这样的事情:

System.out.println("Enter seconds to convert");
   int seconds = scan.nextInt();


查看完整回答
反对 回复 2023-12-10
  • 4 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信