Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用扫描仪_Java - Fatal编程技术网

在Java中使用扫描仪

在Java中使用扫描仪,java,Java,我正在处理一个Java赋值,每当我在扫描器中插入一个十进制数时,代码就会返回错误。我深入了解到,这并不是因为数字是十进制的,而是因为无论何时输入任何不是数字的字符,都会返回此错误 Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source)

我正在处理一个Java赋值,每当我在扫描器中插入一个十进制数时,代码就会返回错误。我深入了解到,这并不是因为数字是十进制的,而是因为无论何时输入任何不是数字的字符,都会返回此错误

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at population.main(population.java:14)
如果有人能帮我让小数生效那就太酷了,这是我的错误代码

import java.util.Scanner;

public class population {

    public static void main(String[] args) {
        System.out.print("Enter the amount of years:"); // Prompts the user
        Scanner input = new Scanner(System.in); // Defines the scanner
        double value = input.nextInt(); // Defines the variable


        double A = (60.0 * 24.0 * 365.0); // Brings time from seconds to years
        double B = ((60.0 / 7.0) * A); // Births per year
        double C = ((60.0 / 13.0) * A); // Deaths per year
        double D = ((60.0 / 45.0) * A); // Immigration per year
        double E = (B + D - C); // Change per year  
        double F = ((E * value) + 312032486.0); // Change in population after 5 years

        System.out.println(F);

    }

}
input.nextInt()接受整数。将其更改为
input.nextDouble()
-将输入的下一个标记扫描为int

扔 InputMismatchException-如果下一个标记与整数正则表达式不匹配,或超出范围

input.nextInt()
接受int类型的输入

使用


input.nextDouble()

由于输入无效而发生异常。您可以添加try-catch块。请参阅下面的代码。
有关更多信息,请参见


因为您是“论坛”的新手,所以这里不是完成作业的合适地方:)
java.util.InputMismatchException
是一个非常描述性的错误;)。使用
.nextDouble()
而不是
.nexttint()
。它高亮显示红色,并表示“类型扫描程序的方法Double()未定义”。别介意我认为您编辑了它,或者我误读了它。介意我问当它说“资源泄漏”输入“从未关闭”时我是否应该担心吗?input.close()在函数的末尾应该去掉警告
public static void main(String[] args) {
    try
    {
        System.out.print("Enter the amount of years:"); // Prompts the user
        Scanner input = new Scanner(System.in); // Defines the scanner
        double value = input.nextInt(); // Defines the variable
        double A = (60.0 * 24.0 * 365.0); // Brings time from seconds to years
        double B = ((60.0 / 7.0) * A); // Births per year
        double C = ((60.0 / 13.0) * A); // Deaths per year
        double D = ((60.0 / 45.0) * A); // Immigration per year
        double E = (B + D - C); // Change per year  
        double F = ((E * value) + 312032486.0); // Change in population after 5 years
        System.out.println(F);
    }
    catch(Exception e)
    {
        System.out.println("Invalid Input");
    }
}