2012-07-24 54 views
1

我有在EDITTEXT格式化數字的問題。我希望用戶能夠輸入一個數字作爲一個任意正或負整數(5或-5),併爲它格式化爲十進制(05)。目前,它的格式爲.05.0,而不是.05,我無法弄清楚原因。此外,如果用戶輸入錯誤的文本或離開字段空白我想設置editText爲「0」。但是,我得到一個錯誤。任何幫助不勝感激。我如何格式化數字解析並傳遞給editText?

public void checkPremium(){ 
    double number = Double.parseDouble(premium.getText().toString()); 
    if(premium.getText().toString().equals(".")||premium.getText().toString().equals("-.")||premium.getText().toString().equals("")){ 
     premium.setText("0"); 
    }else if(number >= 1 || number < 10){ 
     premium.setText(".0"+number); 
    }else if(number >= 10){ 
     premium.setText("."+number); 
    }else if(number <= -1 || number > -10){ 
     premium.setText(".0"+Math.abs(number)); 
    }else if(number <= -10){ 
     premium.setText("."+Math.abs(number)); 
    }else if(number <1 || number >0){ 
      //Do Nothing 
     }  
} 

回答

1

雙解析器將「.0」添加到您的編號。你最好添加你的字符串,而不是你的解析的雙。

+0

你也可能要改變||進入第二和第四個條件的&& – cosmincalistru 2012-07-24 06:33:02

0

簡單的代碼將是:

Double number = Double.parseDouble(premium.getText().toString()); 
if (number.isInfinite() || number.isNan()) number = 0F; 
premium.setText(String.format("%.2f", Math.abs(number)/100); 

希望這有助於...

0

這是更好地使用try和catch塊,如果你不希望任何其他錯誤在現場的EditText

這裏的字符或空的空間是代碼,希望你會發現它是有用的。

  try{ 
       number = Double.parseDouble(premium.getText().toString()); 

       if(number >= 1 || number < 10){ 
        premium.setText(String.valueOf(.01*number)); 
       }else if(number >= 10){ 
        premium.setText(String.valueOf(.1*number)); 
       }else if(number <= -1 || number > -10){ 
        premium.setText(String.valueOf(0.01*Math.abs(number))); 
       }else if(number <= -10){ 
        premium.setText(String.valueOf(0.1*Math.abs(number))); 
       }else if(number <1 || number >0){ 
         //Do Nothing 
       } 

      }catch(Exception e) 
      { 
       premium.setText("0"); 
      } 
相關問題