2016-02-21 62 views
0

所以我試圖在我的程序中包含一個美元測試,檢查用戶輸入的值是否可能是美元量。我在麻煩它在while循環中減去.01。這個想法是,如果他們輸入一個值爲3位小數的值(如2.345),它會捕獲並輸入一個有效數字。有沒有人有任何建議如何解決這個問題?Eclipse,我不斷減去一個while循環的值,它不會給我正確的答案

Scanner input = new Scanner(System.in); 

double dollar = 0; 

    System.out.print("Please enter a dollar amount: "); 
    dollar = input.nextDouble(); 

    while (dollar != 0){ 
     dollar -= .01; 
     if (dollar < 0) 
      {System.out.print("Please enter a valid dollar amount: "); 
      dollar = input.nextDouble(); 
      } 
     System.out.println(dollar); 
    } 
} 

回答

2

我已經用while循環結構中的驗證更新了您的代碼片斷。 這個循環將打破只有當所有以下條件滿足

  • 用戶輸入> $ 0.01
  • 用戶輸入是
  • 用戶輸入僅有兩個十進制值

您可以正值嘗試下面的代碼

import java.util.Scanner; 
public class Testing { 
    public static void main(String args[]) 
    { 
     Scanner input = new Scanner(System.in); 
     double dollar = 0; 
     System.out.print("Please enter a dollar amount: "); 
     dollar = input.nextDouble(); 
     System.out.println("Your value :" + dollar); 
     String text = Double.toString(Math.abs(dollar)); 
     int integerPlaces = text.indexOf('.'); 
     int decimalPlaces = text.length() - integerPlaces - 1; 
     dollar -= .01; 
     while (dollar == 0 | dollar < 0 | decimalPlaces>3){ 
      System.out.print("Please enter a valid dollar amount: "); 
      dollar = input.nextDouble(); 
      System.out.println(dollar); 
      text = Double.toString(Math.abs(dollar)); 
      integerPlaces = text.indexOf('.'); 
      decimalPlaces = text.length() - integerPlaces - 1; 
      dollar -= .01; 
     } 

    } 

} 
+0

我明白你的意思,但如果用戶輸入50.991呢?我試圖找出的部分是如果他輸入了許多小數位。 – spartan17

+0

把條件和交叉檢查十進制數字放在另一個檢查 – Raju

+0

你可以使用'toString()。length()',這個鏈接也可以幫助 - > http://stackoverflow.com/questions/6264576/number-of-小數位數-IN-A-雙 – Raju

相關問題