Я пытаюсь написать базовую программу с графическим интерфейсом для домашнего задания. Я пытаюсь определить переменную для каждой кнопки, нажатой на калькуляторе, и сделать расчет, когда все переменные объявлены. Прямо сейчас, он может только добавлять / вычитать / делить / умножать два числа 0-9, но я хочу убедиться, что смогу это сделать, прежде чем расширять его. Моя проблема в том, что я получаю код ошибки "Недопустимое статическое объявление во внутреннем классе Calculator.sign". Мне интересно, как я могу обойти эту ошибку.
Спасибо
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/*
This program will display a calculator by GUI application. It accepts
floating point numbers.
*/
public class Calculator extends JFrame
{
private final int WINDOW_WIDTH = 350;
private final int WINDOW_HEIGHT = 350;
private double num1 = 0;
private double num2 = 0;
private int sign;
private double answer;
JButton seven = new JButton("7");
JButton eight = new JButton("8");
JButton nine = new JButton("9");
JButton mult = new JButton("x");
JButton four = new JButton("4");
JButton five = new JButton("5");
JButton six = new JButton("6");
JButton min = new JButton("-");
JButton one = new JButton("1");
JButton two = new JButton("2");
JButton three = new JButton("3");
JButton plus = new JButton("+");
JButton zero = new JButton("0");
JButton point = new JButton(".");
JButton equ = new JButton("=");
JButton div = new JButton("/");
//contructor
public Calculator()
{
setTitle("Calculator");
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(4,4));
add(seven);
add(eight);
add(nine);
add(mult);
add(four);
add(five);
add(six);
add(min);
add(one);
add(two);
add(three);
add(plus);
add(zero);
add(point);
add(equ);
add(div);
seven.addActionListener(new ButtonListener());
eight.addActionListener(new ButtonListener());
nine.addActionListener(new ButtonListener());
mult.addActionListener(new ButtonListener());
four.addActionListener(new ButtonListener());
five.addActionListener(new ButtonListener());
six.addActionListener(new ButtonListener());
min.addActionListener(new ButtonListener());
one.addActionListener(new ButtonListener());
two.addActionListener(new ButtonListener());
three.addActionListener(new ButtonListener());
plus.addActionListener(new ButtonListener());
zero.addActionListener(new ButtonListener());
point.addActionListener(new ButtonListener());
equ.addActionListener(new ButtonListener());
div.addActionListener(new ButtonListener());
setVisible(true);
}
private class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == seven)
{
num1 = 7;
}
else if(e.getSource() == eight)
{
num1 = 8;
}
else if(e.getSource() == nine)
{
num1 = 9;
}
else if(e.getSource() == four)
{
num1 = 4;
}
if(e.getSource() == five)
{
num1 = 5;
}
else if(e.getSource() == six)
{
num1 = 6;
}
else if(e.getSource() == one)
{
num1 = 1;
}
else if(e.getSource() == two)
{
num1 = 2;
}
if(e.getSource() == three)
{
num1 = 3;
}
else if(e.getSource() == zero)
{
num1 = 0;
}
}
}
private class sign implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == mult)
{
sign = 1;
}
else if(e.getSource() == div)
{
sign = 2;
}
else if(e.getSource() == plus)
{
sign = 3;
}
else if(e.getSource() == min)
{
sign = 4;
}
}
private class ButtonListener2 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == seven)
{
num2 = 7;
}
else if(e.getSource() == eight)
{
num2 = 8;
}
else if(e.getSource() == nine)
{
num2 = 9;
}
else if(e.getSource() == four)
{
num2 = 4;
}
if(e.getSource() == five)
{
num2 = 5;
}
else if(e.getSource() == six)
{
num2 = 6;
}
else if(e.getSource() == one)
{
num2 = 1;
}
else if(e.getSource() == two)
{
num2 = 2;
}
if(e.getSource() == three)
{
num2 = 3;
}
else if(e.getSource() == zero)
{
num2 = 0;
}
}
}
private class equals implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(sign == 1)
{
answer = num1*num2;
JOptionPane.showMessageDialog(null, answer);
}
else if(sign == 2)
{
answer = num1/num2;
JOptionPane.showMessageDialog(null, answer);
}
else if(sign == 3)
{
answer = num1 + num2;
JOptionPane.showMessageDialog(null, answer);
}
else if(sign == 4)
{
answer = num1 - num2;
JOptionPane.showMessageDialog(null, answer);
}
}
}
/*
Main Method
*/
public static void main(String[] args)
{
new Calculator();
}
}
}