我试图在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)
答案 0 :(得分:2)
由扫描程序抛出,表示检索到的令牌与预期类型的模式不匹配,或者令牌超出预期类型的范围。
您收到此异常是因为您尝试插入错误的值。
确保您插入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循环中的检查。