2013-03-13 106 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循環中。