2013-03-13 82 views
0

我试图以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) 
+1

'2.3'应该可以工作。你确定你没有输入'2,3'吗? – Keppil 2013-03-13 21:36:27

回答

2

InputMismatchException

由扫描程序抛出以指示检索到的标记与预期类型的​​模式不匹配,或标记为o超出预期类型的​​范围。

你得到这个异常是因为你试图插入错误的值。

确保你插入的是2.3而不是2,3或数字以外的东西。如果输入2.3

+0

我积极介绍2.3。我介绍了2,3以及作为两个值 – 2013-03-14 06:43:01

+0

发布您的整个代码,例如输入和输出。 – Maroun 2013-03-14 06:43:34

+1

显然我用逗号引入了2,3,它起作用了。也许NetBeans需要逗号作为浮点值 – 2013-03-14 06:46:54

1

您应该检查如果输入的值可以解释为float

你的程序应该没有问题运行。尝试使用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循环中。