2013-03-13 2 views
0

Я пытаюсь ввести в массив флоат набор чисел с плавающей точкой:Java: Сканер ошибок поплавка

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

ответ

2

InputMismatchException :

Поднятый сканером, чтобы указать, ut диапазона для ожидаемого типа.

Вы получаете это исключение, потому что пытаетесь вставить неправильные значения.

Убедитесь, что вы вставляете 2.3, а не 2,3 или что-то иное, кроме цифр.

Ваша программа должна работать без каких-либо проблем, если вы вводите 2.3

+0

Я уверен, что я представил 2.3. Я также представил 2,3, и это действовало как два значения. –

+0

Опубликуйте весь свой код с примером ввода и вывода. – Maroun

+1

Очевидно я представил 2,3 с запятой, и это сработало. Возможно, netbeans хочет запятые для значений float –

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.