2017-03-03 2 views
1

이것은 코드이며 문자를 입력 할 때 대신 .matches 행을 표시하지 않습니다. 오류가 발생하지만 parseFloat rec1을 제거하고 else를 제거하면 rec1 < total) 다음에 .matches 행이 표시됩니다.이 작업을 수행하는 방법을 미리 알려주십시오.java.lang.NumberFormatException 입력 문자열 값이 문자

CashType c = new CashType(); c.setVisible (true); 당신이 jTextField1에 "asdasd"를 입력하는 것처럼

c.jButton1.addActionListener(new java.awt.event.ActionListener() { 

     public void actionPerformed(java.awt.event.ActionEvent evt) { 
     String receive = c.jTextField1.getText(); 


     float total = total("sellno"+SellNoCount.getText()); 
     float rec1 = Float.parseFloat(receive); //this is line 1525 

      if(!receive.matches("[0-9]+")){ 
       JOptionPane.showMessageDialog(null,"Enter a Valid Amount"); 
       c.jTextField1.setText(""); 

      } 

      else if(receive.equalsIgnoreCase("")){ 
       JOptionPane.showMessageDialog(null,"Enter Amount"); 
      } 
      else if(rec1 < total){ 

       JOptionPane.showMessageDialog(null,"Insufficient Amount"); 

      } 

// ERROR

오류 메시지에서
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "asdasd" 
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) 
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122) 
at java.lang.Float.parseFloat(Float.java:451) 
at projectfinal.SellPage$32.actionPerformed(SellPage.java:1525) 
+0

입니다. – shmosel

+0

그리고 일치하는지 확인하기 전에 비어 있는지 확인해야합니다. – shmosel

+1

'if (! receive.matches ("[0-9] +"))'값을 구문 분석하기 전에이 조건을 확인하십시오. –

답변

2

, 그것은 보인다. 플로트하기 위해 구문 분석하려는이 값입니다. Float.parseFloat(string)는 String이 숫자가 아닌 경우 NumberFormatException을 던집니다. parseFloat() 메서드에서 문자열 매개 변수는 기본 float 값으로 변환됩니다.

입력 된 값이 숫자인지 확인한 다음 부동으로 해석 할 수 있습니다.

float rec1 = 0; 

    if(isNumeric(receive)){ 
     rec1 = Float.parseFloat(receive); 
     if(rec1 < total){ 

     JOptionPane.showMessageDialog(null,"Insufficient Amount"); 

     } 
    }else { 
      JOptionPane.showMessageDialog(null,"Enter a Valid Amount"); 
      c.jTextField1.setText(""); 
     } 

방법은 당신이 구문 분석을 시도하기 전에 일치하는 경우 확인해야

public static boolean isNumeric(String s) { 
    return s.matches("[-+]?\\d*\\.?\\d+"); 
} 
+0

이 문제에 대해 고마워요. 제 문제를 해결하는 데 도움이되었지만, 입력 한 글자를 입력하면 실행 후 작은 문제가 있습니다. 알맞은 금액을 입력 한 후 입력하십시오. 불충분 한 금액 또한 어떻게 해결 될까요? 죄송합니다 질문에 대한 죄송하지만 여전히 자바에 대해 배운 메신저 다시 미리 부탁드립니다 – JoMS

+0

변경된 코드를 사용해보십시오. 그것은 (rec1 <총) 검사가 –

+0

@jomsdakis 밖으로 유지했기 때문에 그것이 당신을 위해 일했던 이번에 희망이 –

관련 문제