2016-03-29 4 views
0

ich einige Codes schreiben wollte zu schreiben, die für ein Element mit einem vorgegebenen Kaufpreis eines Kunden der Zahlung. Ich wollte es so machen, dass, wenn der Kunde einen Betrag niedriger ist als der Kaufpreis eintritt, werden sie aufgefordert, einen anderen Dollar-Betrag einzugeben, bis ihre Zahlung schließlich die Kosten abdeckt. Wenn sie den genauen Betrag geben dann wird keine Änderung gegeben, aber wenn sie den genauen Betrag nicht eine Nachricht an diese ähnliche geben scheint:Ich bin verwirrt, wie Code für eine Änderung refunding Maschine mit verschiedenen Schleifen

$ 20.00 bleibt bezahlt werden. Geben Sie Münze oder Note: $ 10,00

$ 10,00 bezahlt werden muss. Geben Sie Münze oder Note: $ 15.00

Du hast $ 25.00, Ihre Änderung: 1 x $ 5.00

Dies ist der Code ich habe bisher:

String customerPayment; 
    System.out.print("\n" + defaultFormat.format(purchasePrice) + " remains to be paid. Enter coin or note: "); 
    customerPayment = keyboard.next(); 
    while (!customerPayment.startsWith("$")) { 
    System.out.println("\nInvalid coin or note. Try again."); 
    System.out.print("\n" + defaultFormat.format(purchasePrice) + " remains to be paid. Enter coin or note in the form '$##.##': "); 
    customerPayment = keyboard.next(); 
    } 
    while (customerPayment < purchasePrice) { 
    System.out.print((purchasePrice - customerPayment) + " left to be paid. Enter note or coin: "); 
    customerPayment = keyboard.next(); 

Ich habe einen String-Wert für customerPayment verwendet, so Das kann ich für das '$' testen, aber wenn ich die Zeichenfolge parseDouble, erhalte ich einen Compilerfehler. Wie würde ich dieses Kundenzahlungsproblem auf die einfachste Art und Weise programmieren?

+0

was macht der Compiler-Fehler sagen? – Stultuske

+0

trotzdem, das: customerPayment Stultuske

+2

doppelten Wert von String wie ' "$ 10.00"', verwenden Sie 'double d = Double.parseDouble (s.replace ("$", "erhalten"))' –

Antwort

0

Sie könnten die Number Währung verwenden:

public static void main(String... a){ 
    if(a.length<1){ 
     System.err.println("The first argument is the price of the item."); 
     return; 
    } 
    NumberFormat currency = NumberFormat.getCurrencyInstance(Locale.US); 
    final double PRICE=Double.parseDouble(a[0]); 
    double remaining=PRICE; 
    while(remaining>0){   
     String input = System.console().readLine(currency.format(remaining) + " remains to be paid. Enter coin or note: "); 
     Double x=null; 
     try { 
      x = currency.parse(input).doubleValue(); 
     } catch (ParseException e) { 
      System.out.println("Invalid coin or note. Try again."); 
     } 
     if(x!=null) remaining-=x; 
    } 
    if(remaining!=0) 
     System.out.println("You gave " + currency.format(PRICE - remaining) + ", your change is " + currency.format(-remaining)); 
} 
Verwandte Themen