2013-11-24 5 views
1

저는 Java에서 예산 프로그램을 만들고 사용자가 유효한 달러 금액을 입력했는지, 특히 소수점 2 자리를 입력했는지 확인해야합니다. 이 작업을 수행하는 방법에 대한 세부 사항은 없습니다.적절한 십진수 형식 확인 Java

이 내 현재 시도하지만 논리가

aExpense5.addActionListener(new ActionListener() 
    { 
    public void actionPerformed(ActionEvent e) 
    { 
     String desc = aExpense3.getText(); 
     String value = aExpense4.getText(); 
     double fValue = 0; 

     try 
     { 
      fValue = Double.valueOf(value); 
     } 
     catch (NumberFormatException d) 
     { 
      JOptionPane.showMessageDialog(null, "Invalid Number1"); 
     } 
      double dValue = (fValue * 10) % 10; 

      if (dValue <= 0) 
      { 
       updateExpenseList(desc, fValue); 
      } 
      else 
      { 
       JOptionPane.showMessageDialog(null,"invalid Number"); 
      } 
    } 
    }); 

답변

0

이 같은 시도 잘못된 :

if (fValue*100 == (int)(fValue*100)) { 
    //fValue had 2 decimal places or less 
} 

하면 fValue = 0.11 다음 fValue*100 = 11을. 그래서 true11 == (int)11을 가졌을 것입니다.

fValue = 0.111의 경우 fValue*100 = 11.1. 따라서 11.1 == (int)11.1false입니다.

1

당신은 정규식 사용할 수 있습니다

if (value.matches("\\d*\\.\\d\\d")) { 
    // the number string has two decimal places 
} 

이 정규식은 선택 정수 부분 허용을 "0.05"일치합니다.