繁体   English   中英

Java扫描器错误:线程“主”中的异常java.util.NoSuchElementException

[英]Java Scanner Error: Exception in thread “main” java.util.NoSuchElementException

我刚刚开始使用Java开设大学课程,并且在Scanner类中始终遇到此错误。

import java.util.Scanner;

public class InchConversion
{
    public static void main (String[] args)
    {   
        Double inches, centimeters;
        Scanner fromKeyboard = new Scanner(System.in);
        System.out.println("Enter Value in Inches");
        inches = fromKeyboard.nextDouble();
        centimeters = inches*2.54;
        System.out. println(inches + " inches is equal to " + centimeters + " centimeters.");
    }
}

我不断得到的错误是:

  Compiling InchConversion.java.......
-----------OUTPUT-----------
Enter Value in Inches
Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextDouble(Scanner.java:2413)
    at InchConversion.main(InchConversion.java:11)
[Finished in 0.8s with exit code 1]

例如,您需要使用3.0作为输入,因为您明确告诉扫描程序要使用float值,并且在Java中float需要十进制,即使它是整数。 Workouround将是:

double inches = Double.parseDouble(fromKeyboard.nextLine());

这样,您告诉扫描程序解析当前行上的第一个String值,该值也可以解释为double值(在这种情况下,即使数字没有小数,Java编译器也不在乎,它会在解析过程中将其添加)。 因此,如果输入20,它将自动将小数和inches = 20.0inches = 20.0 但是,如果您希望inches = 20.1 ,则仍然必须输入20dot1。 但是至少它摆脱了不直观和陌生的20.0输入。

编辑:我尝试用您的修复程序的代码,它对我来说很好

public static void main (String[] args) {   
    Double inches, centimeters;
    Scanner fromKeyboard = new Scanner(System.in);
    System.out.println("Enter Value in Inches");
    inches = Double.parseDouble(fromKeyboard.nextLine());
    centimeters = inches*2.54;
    System.out.println(inches + " inches is equal to " + centimeters + " centimeters.");
}

如果输入1,则输出为1.0 inches is equal to 2.54 centimeters.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM