2016-11-30 7 views
-1

Ich versuche, den regulären Ausdruck für Schwimmer an der Arbeit. Ich bekomme immer einen FehlerReguläre Ausdrücke für Floats

Kann nicht Übereinstimmungen (String) auf dem primitiven Typ Float aufrufen.

Jede Hilfe? Ich bin irgendwie verloren.

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

'Kann nicht Übereinstimmungen (String) auf dem primitiven Typ float" 'es sagt Ihnen, Sie brauchen eine Zeichenfolge, so tun String.valueOf (a) .mat..' –

+0

Reguläre Ausdrücke arbeiten gegen Strings. Sie müssen konvertieren Sie Ihre Schwimmer in einen String und überprüfen gegen die regex – mba12

+2

Warum nicht einfach verwenden 'scanner.hasNextFloat()' – Mureinik

Antwort

1

Wenn Sie den Benutzer ermöglichen, einen nicht-Float-Wert eingeben und dann lesen Sie es und ihnen sagen, es ist kein gültiger Gleitkommawert, können Sie nicht nextFloat verwenden, es zu lesen , weil ... wenn es kein gültiger Gleitkommawert ist, wird es nicht funktionieren.

Entweder verwenden hasNextFloat, die Ihnen sagen, ob der Scanner lesen kann ein float (aber Sie werden dem Benutzer nicht zulassen, sagen sie etwas eingegeben, der kein Schwimmer war), oder nextLine verwenden zu lesen, was sie eingegeben (wie a String) und bestätigen, dass dann (über matches).