Java:扫描程序浮动错误

时间:2013-03-13 21:27:15

标签: java exception

我试图在float数组中引入一组浮点数:

protected float[] a = new float [100];

public void setCoef(){

    System.out.println("Introduceti coeficientii: ");
    for (int i = 0; i <= this.grad; i++)
    {
        Scanner in = new Scanner(System.in);
        this.a[i] = in.nextFloat();
    }

}

但是当我输入2.3例如:

时会产生此异常
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextFloat(Scanner.java:2388)
at polinom.PolinomR.setCoef(PolinomR.java:35)
at polinom.PolinomReal.grade_coef(PolinomReal.java:14)
at polinom.Operatii.main(Operatii.java:43)

2 个答案:

答案 0 :(得分:2)

InputMismatchException

  

由扫描程序抛出,表示检索到的令牌与预期类型的​​模式不匹配,或者令牌超出预期类型的​​范围。

您收到此异常是因为您尝试插入错误的值。

确保您插入2.3而不是2,3或其他数字。

如果您输入2.3

,您的程序应该可以正常运行

答案 1 :(得分:1)

您应该检查输入的值是否可以解释为浮点数。在尝试使用它之前,请尝试使用hasNextFloat()验证该值。如果遇到错误的值,我不知道你想做什么,但这样可以避免异常。

您可以使用以下内容:

protected float[] a = new float [100];

public void setCoef(){

    System.out.println("Introduceti coeficientii: ");
    Scanner in = new Scanner(System.in);
    for (int i = 0; i <= this.grad; i++)
    {
        while (!in.hasNextFloat())
        {
            // Do something with bad value, e.g.
            // System.out.println("Bad value");
            // in.nextLine();
        }
        this.a[i] = in.nextFloat();
    }
}

此外,我不确定this.grad是什么,但您应该确保它小于a的大小,或者将其添加到for循环中的检查。