2012-07-24 2 views
1

editText에 숫자 서식을 지정하는 데 문제가 있습니다. 사용자가 양수 또는 음수 (5 또는 -5)로 숫자를 입력하고 십진수 (.05)로 서식을 지정하기를 원합니다. 현재, .05 대신 .05.0으로 서식이 지정되어 있으며 이유를 파악할 수 없습니다. 또한 사용자가 잘못된 텍스트를 입력하거나 필드를 비워두면 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"을 추가합니다. String을 추가하고 파싱 된 double은 추가하지 않는 것이 좋습니다.

+0

또한 || 두 번째 및 네 번째 조건에서 &&에 입력하십시오. – cosmincalistru

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{ 
       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"); 
      } 
관련 문제