Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2018, 13:15   #1
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию Неправильно работает калькулятор

Здравствуйте) Калькулятор просто удваивает второе число.Вроде понимаю, в чем проблема, а на деле не могу найти, что не так( Если поможете, буду очень благодарна!

Код:
package com.company; 
import com.company.CalcFrame; 
 
import javax.swing.*; 
import java.awt.*; 
public class Main { 
 
 public static void main(String[] args) { 
 CalcFrame frame=new CalcFrame(); 
 
 } 
}
Новый класс:

Код:
package com.company; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
public class CalcFrame extends JFrame { 
 public String operation; 
 CalcFrame() { 
 
 setBounds(300, 300, 300, 300); 
 setLayout(new BorderLayout()); 
 add(display, BorderLayout.NORTH); 
 add(buttonPanel, BorderLayout.CENTER); 
 
 JButton b1 = new JButton("0"); 
 JButton b2 = new JButton("1"); 
 JButton b3 = new JButton("2"); 
 JButton b4 = new JButton("3"); 
 JButton b5 = new JButton("4"); 
 JButton b6 = new JButton("5"); 
 JButton b7 = new JButton("6"); 
 JButton b8 = new JButton("7"); 
 JButton b9 = new JButton("8"); 
 JButton b10 = new JButton("9"); 
 JButton buttonSum = new JButton("+"); 
 JButton b12 = new JButton("-"); 
 JButton b13 = new JButton("*"); 
 JButton b14 = new JButton("/"); 
 JButton b15 = new JButton("√"); 
 JButton b16 = new JButton("C"); 
 JButton buttonStart = new JButton("="); 
 
 
 buttonPanel.add(b1); 
 buttonPanel.add(b2); 
 buttonPanel.add(b3); 
 buttonPanel.add(b4); 
 buttonPanel.add(b5); 
 buttonPanel.add(b6); 
 buttonPanel.add(b7); 
 buttonPanel.add(b8); 
 buttonPanel.add(b9); 
 buttonPanel.add(b10); 
 buttonPanel.add(buttonSum); 
 buttonPanel.add(b12); 
 buttonPanel.add(b13); 
 buttonPanel.add(b14); 
 buttonPanel.add(b15); 
 buttonPanel.add(b16); 
 buttonPanel.add(buttonStart); 
 
 
 add(buttonStart, BorderLayout.SOUTH); 
 
 setVisible(true); 
 
 
 b1.addActionListener(new ActionListener() { 
 [id384774802|@Override] 
 public void actionPerformed(ActionEvent e) { 
 display.setText(display.getText() + "0"); 
 } 
 }); 
 b2.addActionListener(new ActionListener() { 
 // [id384774802|@Override] 
 public void actionPerformed(ActionEvent e) { 
 display.setText(display.getText() + "1"); 
 } 
 }); 
 b3.addActionListener(new ActionListener() { 
 [id384774802|@Override] 
 public void actionPerformed(ActionEvent e) { 
 display.setText(display.getText() + "2"); 
 } 
 }); 
 b4.addActionListener(new ActionListener() { 
 [id384774802|@Override] 
 public void actionPerformed(ActionEvent e) { 
 display.setText(display.getText() + "3"); 
 } 
 }); 
 b5.addActionListener(new ActionListener() { 
 [id384774802|@Override] 
 public void actionPerformed(ActionEvent e) { 
 display.setText(display.getText() + "4"); 
 } 
 }); 
 b6.addActionListener(new ActionListener() { 
 [id384774802|@Override] 
 public void actionPerformed(ActionEvent e) { 
 display.setText(display.getText() + "5"); 
 } 
 }); 
 b7.addActionListener(new ActionListener() { 
 [id384774802|@Override] 
 public void actionPerformed(ActionEvent e) { 
 display.setText(display.getText() + "6"); 
 } 
 }); 
 
 b8.addActionListener(new ActionListener() { 
 [id384774802|@Override] 
 public void actionPerformed(ActionEvent e) { 
 display.setText(display.getText() + "7"); 
 } 
 }); 
 
 b9.addActionListener(new ActionListener() { 
 [id384774802|@Override] 
 public void actionPerformed(ActionEvent e) { 
 display.setText(display.getText() + "8"); 
 } 
 }); 
 
 b10.addActionListener(new ActionListener() { 
 [id384774802|@Override] 
 public void actionPerformed(ActionEvent e) { 
 display.setText(display.getText() + "9"); 
 } 
 }); 
 
 b16.addActionListener(new ActionListener() { 
 [id384774802|@Override] 
 public void actionPerformed(ActionEvent e) { 
 String temp = display.getText(); 
 display.setText(temp.substring(0, temp.length() - 1)); 
 } 
 }); 
 
 int firstValue = 0; 
 
 
 buttonSum.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent e) { 
 int firstValue = Integer.valueOf(display.getText()); 
 display.setText(""); 
 operation = "+"; 
 } 
 }); 
 b13.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent e) { 
 int firstValue = Integer.valueOf(display.getText()); 
 display.setText(""); 
 operation = "*"; 
 } 
 }); 
 
 b14.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent e) { 
 int firstValue = Integer.valueOf(display.getText()); 
 display.setText(""); 
 operation = "/";
} 
 }); 
 
 b12.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent e) { 
 int firstValue = Integer.valueOf(display.getText()); 
 display.setText(""); 
 operation = "-"; 
 } 
 }); 
 System.out.print(operation); 
 buttonStart.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent e) { 
 int secondValue = Integer.valueOf(display.getText()); 
 int firstValue = 0; 
 if ("+".equals(operation)) { 
 display.setText((firstValue + secondValue) + ""); 
 } 
 
 if ("-".equals(operation)) { 
 display.setText((firstValue - secondValue) + ""); 
 } 
 
 if ("*".equals(operation)) { 
 display.setText((firstValue * secondValue) + ""); 
 } 
 
 if ("/".equals(operation)) { 
 display.setText((firstValue / secondValue) + ""); 
 
 } 
 }); 
 
 } 
 JTextArea display = new JTextArea(); 
 JPanel buttonPanel = new JPanel(new GridLayout(3, 5)); 
}

Последний раз редактировалось kris14; 28.02.2018 в 18:11.
kris14 вне форума Ответить с цитированием
Старый 01.03.2018, 07:45   #2
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

Цитата:
public void actionPerformed(ActionEvent e) {
int secondValue = Integer.valueOf(display.getText());
int firstValue = 0;
Если я не ошибаюсь, то у вас переменная firstValue всегда равна нулю.
ultimatet41 вне форума Ответить с цитированием
Старый 02.03.2018, 19:44   #3
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию

Несколько раз меняла всё, поэтому не совсем ту версию прислала, там пробовала ставить:
Код:
 int firstValue = Integer.valueOf(display.getText());
Но результат такой же: при суммировании и умножении он просто удваивает второе число.
Но там выше есть точно такая же строчка, где обнуляется эта переменная, но когда я её убираю, возникает ошибка, что переменная не инициализирована.
kris14 вне форума Ответить с цитированием
Старый 03.03.2018, 12:56   #4
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

int firstValue = 0;
Сделать членом класса

Код:
public class CalcFrame extends JFrame { 
 public String operation; 
 private int firstValue = 0;
В двух других местах убрать

int firstValue = 0;

...не удобно читать без отступов.
alexzk вне форума Ответить с цитированием
Старый 03.03.2018, 13:36   #5
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию

Спасибо, сделала, но ничего не меняется в итоге( он как удваивал последнее число, так и удваивает(
Извините, исправила, надеюсь теперь удобнее)

Код:
package com.company;
 
 import javax.swing.*;

  import java.awt.*;

   import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

public class CalcFrame extends JFrame {
    
    public   String operation;
    
     private int firstValue = 0;
    
    CalcFrame() {

        setBounds(300, 300, 300, 300);
    
         setLayout(new BorderLayout());
     
          add(display, BorderLayout.NORTH);
    
           add(buttonPanel, BorderLayout.CENTER);
        
        JButton b1 = new JButton("0");

         JButton b2 = new JButton("1");

          JButton b3 = new JButton("2");

           JButton b4 = new JButton("3");

            JButton b5 = new JButton("4");

             JButton b6 = new JButton("5");

              JButton b7 = new JButton("6");

               JButton b8 = new JButton("7");

                JButton b9 = new JButton("8");

                 JButton b10 = new JButton("9");

                  JButton buttonSum = new JButton("+");

                   JButton b12 = new JButton("-");

                    JButton b13 = new JButton("*");
         
                     JButton b14 = new JButton("/");

                      JButton b15 = new JButton("√");

                        JButton b16 = new JButton("C");

                         JButton buttonStart = new JButton("=");
        
        buttonPanel.add(b1);
        
         buttonPanel.add(b2);
        
          buttonPanel.add(b3);
        
           buttonPanel.add(b4);
        
            buttonPanel.add(b5);
        
             buttonPanel.add(b6);
        
              buttonPanel.add(b7);
        
               buttonPanel.add(b8);
        
                buttonPanel.add(b9);
        
                 buttonPanel.add(b10);
        
                  buttonPanel.add(buttonSum);
        
                   buttonPanel.add(b12);
        
                    buttonPanel.add(b13);
        
                     buttonPanel.add(b14);
        
                      buttonPanel.add(b15);
        
                       buttonPanel.add(b16);
        
                        buttonPanel.add(buttonStart);
        
        add(buttonStart, BorderLayout.SOUTH);

        setVisible(true);


        b1.addActionListener(new ActionListener() {
            
            @Override
            
             public void actionPerformed(ActionEvent e) {
                
                display.setText(display.getText() + "0");
            }
        });
        
        b2.addActionListener(new ActionListener() {
            
            @Override
            
             public void actionPerformed(ActionEvent e) {
             
                display.setText(display.getText() + "1");
            }
        });
        
        b3.addActionListener(new ActionListener() {
        
            @Override
        
             public void actionPerformed(ActionEvent e) {
         
                display.setText(display.getText() + "2");
            }
        });
        
        b4.addActionListener(new ActionListener() {
        
            @Override
        
             public void actionPerformed(ActionEvent e) {
         
                display.setText(display.getText() + "3");
            }
        });
        
        b5.addActionListener(new ActionListener() {
        
            @Override
        
             public void actionPerformed(ActionEvent e) {
         
                display.setText(display.getText() + "4");
            }
        });
        
        b6.addActionListener(new ActionListener() {
        
            @Override
        
             public void actionPerformed(ActionEvent e) {
         
                display.setText(display.getText() + "5");
            }
        });
        
        b7.addActionListener(new ActionListener() {
        
            @Override
        
             public void actionPerformed(ActionEvent e) {
         
                display.setText(display.getText() + "6");
            }
        });

        b8.addActionListener(new ActionListener() {
         
            @Override
         
             public void actionPerformed(ActionEvent e) {
          
                display.setText(display.getText() + "7");
            }
        });

        b9.addActionListener(new ActionListener() {
          
            @Override
           
             public void actionPerformed(ActionEvent e) {
           
                display.setText(display.getText() + "8");
            }
        });

        b10.addActionListener(new ActionListener() {
           
            @Override
           
             public void actionPerformed(ActionEvent e) {
            
                display.setText(display.getText() + "9");
            }
        });

        b16.addActionListener(new ActionListener() {
            
            @Override
            
             public void actionPerformed(ActionEvent e) {
             
                String temp = display.getText();
             
                 display.setText(temp.substring(0, temp.length() - 1));
            }
        });
        
        final String[] operation = new String[1];

        buttonSum.addActionListener(new ActionListener() {
       
            @Override
       
             public void actionPerformed(ActionEvent e) {
        
                int  firstValue = Integer.valueOf(display.getText());
        
                 display.setText("");
         
                  operation[0] = "+";
            }
        });
        
        b13.addActionListener(new ActionListener() {
        
            @Override
            
             public void actionPerformed(ActionEvent e) {
             
                int firstValue = Integer.valueOf(display.getText());
             
                 display.setText("");
              
                  operation[0] = "*";
            }
        });

        b14.addActionListener(new ActionListener() {
            
            @Override
            
             public void actionPerformed(ActionEvent e) {
             
                int firstValue = Integer.valueOf(display.getText());
                
                 display.setText("");
                
                  operation[0] = "/";
            }
        });

        b12.addActionListener(new ActionListener() {
            
            @Override
            
             public void actionPerformed(ActionEvent e) {
             
                int firstValue = Integer.valueOf(display.getText());
             
                 display.setText("");
              
                  operation[0] = "-";
            }
        });
        
        buttonStart.addActionListener(new ActionListener() {
         
            @Override
         
             public void actionPerformed(ActionEvent e) {
          
                int secondValue = Integer.valueOf(display.getText());
                
                 int firstValue = Integer.valueOf(display.getText());
                
                  if ("+".equals(operation[0])) {
                  
                    display.setText((firstValue + secondValue) + "");
                }

                if ("-".equals(operation[0])) {
                    
                    display.setText((firstValue - secondValue) + "");
                }

                if ("*".equals(operation[0])) {
                    
                    display.setText((firstValue * secondValue) + "");
                }

                if ("/".equals(operation[0])) {
                    
                    display.setText((firstValue / secondValue) + "");
                }

            }
        });

    }
    JTextArea display = new JTextArea();
     
     JPanel buttonPanel = new JPanel(new GridLayout(3, 5));
}
kris14 вне форума Ответить с цитированием
Старый 03.03.2018, 14:00   #6
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

ВЕЗДЕ

int firstValue =

на

firstValue =

вы каждый раз создаете новую переменную, которая локальная и не используется. Т.о. я даже не понимаю почему удвоение) там просто ничего былть должно, так как глобальная firstValue всегда ноль.

А понял откуда удвоение, в самом конце вы еще 1 копию делаете

int secondValue = Integer.valueOf(display.getText());

int firstValue = Integer.valueOf(display.getText());

тут вообще убрать нафиг int firstValue = Integer.valueOf(display.getText());


Кароче вы пока чинили ошибку с "всегда ноль", сделали еще других.

Я так понимаю, вы копируете чтото...так вот

Код:
int firstValue =
Значит "создать новое и присвоить значение, внутри текущего блока".

Код:
firstValue =
Значит "уже существующему в блоке присвоить значение".

Т.о. у вас там глобальная ошибка от непонимания сути - вы каждый раз создаете НОВОЕ (но с таким же именем, что допустимо) и даете ему значение, которое теряется при выходе из блока {}.

Последний раз редактировалось alexzk; 03.03.2018 в 14:15.
alexzk вне форума Ответить с цитированием
Старый 03.03.2018, 14:16   #7
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию

Всё получилось! Спасибо огромное Вам!! Я вот тоже косо поглядывала на эту строку, но когда её убирала, то вообще ничего не считалось, поэтому всё же оставляла)
Спасибо еще раз!!
kris14 вне форума Ответить с цитированием
Старый 03.03.2018, 14:26   #8
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от kris14 Посмотреть сообщение
Всё получилось! Спасибо огромное Вам!! Я вот тоже косо поглядывала на эту строку, но когда её убирала, то вообще ничего не считалось, поэтому всё же оставляла)
Спасибо еще раз!!
Не верные выводы, не "вообще ничего не считалось",. а первое значение было 0 - что можно было бы увидеть при умножении/делении. Тогда бы вам стала ясна суть ошибки, что "firstValue" почему-то всегда 0.
Не спешите делать выводы, никогда.
alexzk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор неправильно считает Jereme JavaScript, Ajax 1 03.02.2013 16:39
неправильно считает калькулятор -=Andriushka=- Помощь студентам 5 10.04.2011 01:14
TextRect работает неправильно bbk_serg БД в Delphi 16 10.08.2010 21:11
sscanf() неправильно работает BioS Общие вопросы C/C++ 7 06.02.2010 22:36
Запрос неправильно работает... yulia БД в Delphi 0 27.05.2007 20:41