2

editTextでの数値のフォーマットに問題があります。ユーザーが数値を正または負の整数(5または-5)として入力し、10進数(.05)としてフォーマットできるようにしたいと思います。現在、.05ではなく.05.0としてフォーマットされており、その理由がわかりません。また、ユーザーが誤ったテキストを入力したり、フィールドを空白のままにした場合は、editTextを「0」に設定します。ただし、代わりにエラーが発生します。どんな助けでも大歓迎です。

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
         }       
 }
4

4 に答える 4

1

ダブルパーサーはあなたの番号に「.0」を追加します。解析されたdoubleではなく、Stringを追加する方がよいでしょう。

于 2012-07-24T06:29:09.537 に答える
0

より単純なコードは次のようになります。

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

お役に立てれば...

于 2012-07-24T07:44:14.027 に答える
0

DecimalFormatterまたは文字列指定子を使用します。次の答えを確認してください。: Androidで小数点以下2桁のdoubleを印刷するにはどうすればよいですか?

于 2012-07-24T06:32:49.307 に答える
0

edittextフィールドに他の誤った文字や空のスペースが必要ない場合は、tryブロックとcatchブロックを使用することをお勧めします。

ここにコードがあり、あなたがそれが役に立つと思うことを願っています。

          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");
             }
于 2012-07-24T07:55:08.587 に答える