2016-12-01 6 views
0

Ich versuche, eine Anwendung zu schreiben, die einen Dollarbetrag eingibt, um auf einem Scheck gedruckt zu werden, ich habe Probleme herauszufinden, wie Sie die Nummer in einem Scheck mit führenden **** Sternchen ausgedruckt werden .Überprüfen Sie das Schutzformat

Hier ist der Code, den ich bisher

import java.text.DecimalFormat; 
import java.util.Scanner; 
import java.text.NumberFormat; 
import java.util.Locale; 
public class CheckProtection 
{ 
    private static double maxAmount = 1000; 
    public static void main (String args []) 
    { 

     //System.out.printf(checkFormatter.format(check)); 
     //DecimalFormat checker = new DecimalFormat("******.**"); 
     //System.out.println(checker); 
     boolean validEntry = false; 
     while (validEntry == false) 
     { 
      Scanner userEntry = new Scanner(System.in); 
      System.out.println("Enter The check amount under a $1000.00 and greater that 0."); 
      if (userEntry.hasNextDouble() == true) 
      { 
       double check = userEntry.nextDouble(); 
       if (check > 0) 
       { 
        if(check < maxAmount) 
        { 
         validEntry = true; 

         NumberFormat checkFormatter = NumberFormat.getCurrencyInstance(); 
         checkFormatter.format(check); 
         System.out.printf("%5s",+ check); 
        } 
       } 
      } 
     } 








    } 
+0

Wir brauchen etwas mehr als einen Code-Dump. Was sind einige Eingaben/erwartete Ausgaben/tatsächliche Ausgaben? – rmlan

+0

Eingabe: 3,54, 525,43, 72,50 Outout: *** $ 3,54, ** $ 525,43, *** $ 72,50, –

Antwort

0

bearbeiten haben: Mit den Probeneingängen und erwartete Ausgabe im Kommentar gegeben, meine Antwort nicht richtig war.

jeder dieser Eingänge gegeben, sollte dieses Update produzieren die erwartete Ausgabe:

String value = "$" + String.format("%.2f", check); 
System.out.println(value); 
String check_fmt = ("*********" + value).substring(value.length()); 
System.out.println(check_fmt); 

Hinweis: geliehenen Einfallsreichtum von this answer

alte Antwort: Nicht sicher, ob es mit printf() getan werden könnte, aber String.format Werke,

String result = String.format("%6.2f", check); // 6 spaces width, 2 spaces precision, 'f' converts the double 
System.out.println(result.replace(" ", "*")); 

Hinweis: 6 verwendeten Räume width = 3 Räume für die le dollar + 2 Leerzeichen für Cent + 1 Leerzeichen für dezimal

Verwandte Themen