2013-05-23 4 views
-3

его в основном события кнопки, что делает умножениепочему это делает бросить исключение Числового формата

mul.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 


       if(Sans == null){ 
        temp = text; 
       }else { 
        temp = Sans ; 
       } 
       text = ""; 

       equal = "mul" ; 

       textArea.setText("*"); 
      } 
     }); 
      this is the action that happens when pressing equal button 
       ans.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 

       if(equal == "mul"){ 
        double a = Double.parseDouble(text); 
        double b = Double.parseDouble(temp); 
        double ans = b*a; 
        String Sans = String.valueOf(ans); 
        textArea.setText(Sans); 
        text = "" ; 
       } 
        } 

этот код дает результат для первого умножения, но дает NumberFormatException на последовательном умножении тот же код работает отлично делает операция деления.

+1

ошибка в вашем коде: Не используйте '' == для сравнения строк. 'if (equal ==" mul ")' неверно; используйте 'if (equal.equals (" mul "))' вместо. – Jesper

+0

NFE бросается, когда вы пытаетесь разобрать то, что не является числом. Если вы добавите полный стек, мы сможем вам помочь. – BobTheBuilder

+0

Сделайте некоторые отладки. Либо используйте ваш отладчик в среде IDE, либо установите точку останова в первой строке Double.parseDouble или добавьте System.out.printlns (я думаю, что вас интересует значение текста и темпа, тогда вы увидите, что не так). –

ответ

1

Обновите, если условие из

if(equal == "mul") 

в

if(equal.equals("mul")) 

And learn more about string comparisions. Related post https://stackoverflow.com/questions/767372/java-string-equals-versus

+0

все еще не работает :( –

+0

@AnkurTeotia распечатывает номера, прежде чем назначать их двойнику. Если числовая строка не является допустимым числом, например «7s»/«7x» или что-то еще, вы получите numberformatexception при выполнении Double.parseDouble Поэтому убедитесь, что ваша строка чисел хороша для преобразования в двойное. –

Смежные вопросы