通过读取double来获取java.util.InputMismatchException

时间:2013-12-04 10:28:31

标签: java inputmismatchexception

当我尝试读取0.6时,我得到了一个java.util.InputMismatchException,这是代码的一部分。正如您所看到的,我尝试重新实现一个练习表的SkipList。

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        double f = scan.nextDouble();
        impl_with_errors list = new impl_with_errors(f);
        int n = scan.nextInt();


public class impl_with_errors {
    public static double chance;
    public Node list0;
    public Node list1;
    public Node list2;
    public Node list3;
/**
 * the constructor of the skiplist
 * @param p the chance that an element shall be in a higher list
 */
    public impl_with_errors(double p) {
        chance = p;
        list0 = null;
        list1 = null;
        list2 = null;
        list3 = null;
    }

3 个答案:

答案 0 :(得分:0)

使用逗号作为小数点分隔符,而不是点。 0,6有效

使用DecimalFormat df = new DecimalFormat("#,#");

格式化double值

答案 1 :(得分:0)

来自文档:

  

public double nextDouble()

     

将输入的下一个标记扫描为double。如果下一个标记无法转换为有效的double值,则此方法将抛出InputMismatchException。如果翻译成功,扫描仪将超过匹配的输入。

解析0.6应该有效,但是如果你想输入0,6你可以使用它:

String dstr = scan.nextLine();

dstr = dstr.replace(",", ".");

double f = Double.parseDouble(dstr);

答案 2 :(得分:0)

您的代码只会尝试在main方法中修改这些行:

    Scanner scan = new Scanner(System.in);
    System.out.println("Enter the double value:\n");
    double f = scan.nextDouble();
    impl_with_errors list = new impl_with_errors(f);
    System.out.println("Enter the integer value:\n");
    int n = scan.nextInt();

它应该有用。