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

我在 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);

    }

}

我知道它不会正确计算分钟和小时,我只是写下代码来测试它是否运行。


当年话下
浏览 121回答 4
4回答

慕标5832272

因为终端正在等待某个值,所以在这一行中:Scanner scan = new Scanner(System.in); int seconds = scan.nextInt();基本上,您正在创建一个 Scanner 对象,并声明一个 int 变量等待一个值(在本例中是下一个整数)来执行某些操作。只需在终端中输入一些整数,它就应该可以正常工作。

一只名叫tom的猫

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

牧羊人nacy

在终端中,扫描仪正在等待用户输入 int 类型,您需要在终端中输入秒。显示错误是因为您输入的是 String 类型值,但扫描仪需要 int 类型。希望这能解决这个问题。

哔哔one

您需要提示用户输入以秒为单位的时间,以便您的扫描仪实际上可以为您的秒数输入一些内容。做这样的事情:System.out.println("Enter seconds to convert");    int seconds = scan.nextInt();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java