0

我正在尝试在浮点数组中引入一组浮点数:

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)
4

2 回答 2

2

输入不匹配异常

由 Scanner 抛出以指示检索到的令牌与预期类型的​​模式不匹配,或者令牌超出预期类型的​​范围。

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

确保您正在插入2.3,而2,3不是数字以外的其他内容。

如果您输入,您的程序应该可以正常运行2.3

于 2013-03-13T21:38:47.627 回答
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 循环中的检查中。

于 2013-03-13T21:45:45.057 回答