2016-11-30 2 views
-1

Я пытаюсь заставить регулярное выражение для поплавков работать. Я продолжаю получать сообщение об ошибкеРегулярные выражения для поплавков

Невозможно вызывать совпадения (String) на подиуме примитивного типа.

Любая помощь? Я немного потерян.

System.out.print("Enter $ amount of loan:"); 
payment = scanner.nextFloat(); 

while (!Regulations.paymentmatch(payment)) { 
    System.out.println("Information Not Correctly Entered"); 
    System.out.printf("Please try again: "); 
    payment = scanner.nextFloat(); 
} 

public static boolean paymentmatch(float a) { 
    return a.matches("\\d+.?\\d{2}"); 
} 
+1

'Невозможно вызывать совпадения (String) на примитиве типа float" 'это говорит вам, вам нужна строка, так что' String.valueOf (a) .mat..' –

+0

Регулярные выражения работают со строками. конвертировать ваш float в String и проверять регулярное выражение. – mba12

+2

Почему бы просто не использовать 'scanner.hasNextFloat()'? – Mureinik

ответ

1

Если вы хотите, чтобы позволить пользователю ввести значение без поплавка, а затем прочитать его и сказать им, что это не является допустимым значением с плавающей точкой, вы не можете использовать nextFloat прочитать его , потому что ... если это не допустимое значение float, оно не будет работать.

Либо использовать hasNextFloat, который расскажет вам, может ли сканер читать float (но не даст вам сказать пользователю они набранный то, что не было поплавок), или использовать nextLine читать то, что они набрали (как a String), а затем подтвердите это (через matches).

Смежные вопросы