2016-12-01 71 views
0

我正試圖編寫一個應用程序,輸入要打印在支票上的美元金額,我無法弄清楚如何在支票上打印出數字,並用****星號。檢查保護格式

這裏是我到目前爲止

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

我們需要的不僅僅是代碼轉儲。什麼是一些投入/預期產出/實際產出? – rmlan

+0

輸入:3.54,525.43,72.50輸出:*** $ 3.54,** $ 525.43,*** $ 72.50, –

回答

0

編輯代碼:與樣品投入和評論給出預期的輸出,我以前的答案是不正確的。

鑑於每個這樣的輸入,此更新應該能產生預期的輸出:

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

注:借別出心裁從this answer

老答案:如果不知道它會與printf()來完成,但是String.format作品

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

注意:對於誰使用了6個空格寬度= 3個空格le美元+ 2美分的空格+ 1空格的小數