Имея немного проблем с моей программой, они отображают неправильные результаты, и когда вы пытаетесь выполнить вычисления для одной цифры, вы получите сообщение об ошибке. Программа, размещенная ниже, любая помощь приветствуется.Java Calculator Отображение неверных результатов
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calc extends JFrame{
public static void main(String[] args){
Calc myFrame = new Calc();
myFrame.pack();
myFrame.setTitle("Calculator");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setLocationRelativeTo(null);
myFrame.setVisible(true);
}//main
private JTextField jtfNum1, jtfNum2, jtfResult;
private JButton jbtAdd, jbtSub, jbtMul, jbtDiv, jbt1, jbt2, jbt3, jbt4, jbt5, jbt6, jbt7, jbt8, jbt9, jbt0, jbtDec, jbtC, jbtE, jbtClear;
double number1 = 0;
double number2 = 0;
double result = 0;
String display = "";
String display1 ="";
char oper = ('A');
public Calc(){
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(5,4));
p1.add(jbt1 = new JButton("1"));
p1.add(jbt2 = new JButton("2"));
p1.add(jbt3 = new JButton("3"));
p1.add(jbtAdd = new JButton("+"));
p1.add(jbt4 = new JButton("4"));
p1.add(jbt5 = new JButton("5"));
p1.add(jbt6 = new JButton("6"));
p1.add(jbtSub = new JButton("-"));
p1.add(jbt7 = new JButton("7"));
p1.add(jbt8 = new JButton("8"));
p1.add(jbt9 = new JButton("9"));
p1.add(jbtMul = new JButton("*"));
p1.add(jbt0 = new JButton("0"));
p1.add(jbtClear = new JButton("CE"));
p1.add(jbtE = new JButton("="));
p1.add(jbtDiv = new JButton("/"));
JPanel p2 = new JPanel(new BorderLayout());
p2.add(jtfResult = new JTextField(8), BorderLayout.NORTH);
p2.add(p1, BorderLayout.CENTER);
jtfResult.setEditable(false);
this.setLayout(new BorderLayout());
this.add(p2, BorderLayout.CENTER);
jbt1.addActionListener(new myListener());
jbt2.addActionListener(new myListener());
jbt3.addActionListener(new myListener());
jbt4.addActionListener(new myListener());
jbt5.addActionListener(new myListener());
jbt6.addActionListener(new myListener());
jbt7.addActionListener(new myListener());
jbt8.addActionListener(new myListener());
jbt9.addActionListener(new myListener());
jbt0.addActionListener(new myListener());
jbtAdd.addActionListener(new myListener());
jbtDiv.addActionListener(new myListener());
jbtSub.addActionListener(new myListener());
jbtMul.addActionListener(new myListener());
jbtE.addActionListener(new myListener());
jbtClear.addActionListener(new myListener());
}
class myListener implements ActionListener{
public void actionPerformed(ActionEvent e){
String actionCommand = e.getActionCommand();
if ("1".equals(actionCommand)){
display = jtfResult.getText();
jtfResult.setText(display + "1");
}
else if ("2".equals(actionCommand)){
display = jtfResult.getText();
jtfResult.setText(display + "2");
}
else if ("3".equals(actionCommand)){
display = jtfResult.getText();
jtfResult.setText(display + "3");
}
else if ("4".equals(actionCommand)){
display = jtfResult.getText();
jtfResult.setText(display + "4");
}
else if ("5".equals(actionCommand)){
display = jtfResult.getText();
jtfResult.setText(display + "5");
}
else if ("6".equals(actionCommand)){
display = jtfResult.getText();
jtfResult.setText(display + "6");
}
else if ("7".equals(actionCommand)){
display = jtfResult.getText();
jtfResult.setText(display + "7");
}
else if ("8".equals(actionCommand)){
display = jtfResult.getText();
jtfResult.setText(display + "8");
}
else if ("9".equals(actionCommand)){
display = jtfResult.getText();
jtfResult.setText(display + "9");
}
else if ("0".equals(actionCommand)){
display = jtfResult.getText();
jtfResult.setText(display + "0");
}
else if ("+".equals(actionCommand)){
display1 = display;
oper = '+';
jtfResult.setText("");
}
else if ("-".equals(actionCommand)){
oper = '-';
display1 = display;
jtfResult.setText("");
}
else if ("/".equals(actionCommand)){
oper = '/';
display1 = display;
jtfResult.setText("");
}
else if ("*".equals(actionCommand)){
oper = '*';
display1 = display;
jtfResult.setText("");
}
else if("=".equals(actionCommand)){
solve();
System.out.println(display1);
System.out.println(display);
}
else if ("CE".equals(actionCommand)){
jtfResult.setText("");
}
}//Action Performed
}
public void solve(){
number1 = Double.parseDouble(display1);
number2 = Double.parseDouble(display);
jtfResult.setText("");
if (oper == '+'){
result = number1 + number2;
String stringResult = Double.toString(result);
jtfResult.setText(stringResult);
}
else if (oper == '-'){
result = number1 - number2;
String stringResult = Double.toString(result);
jtfResult.setText(stringResult);
}
else if (oper == '*'){
result = number1 * number2;
String stringResult = Double.toString(result);
jtfResult.setText(stringResult);
}
else if (oper == '/'){
if (number2 == 0)
jtfResult.setText("ERROR");
else
result = number1/number2;
String stringResult = Double.toString(result);
jtfResult.setText(stringResult);
}
}
}
* "вы получите сообщение об ошибке." * Какую ошибку? Всегда копируйте/вставляйте ошибку, а не заставляйте нас угадывать. В стороне, не забудьте задать вопрос. –
Поместите в свой код больше println, особенно перед расположением ошибок. Затем логически пройдите логически, как если бы вы были компьютером. Затем вы увидите, что вы не меняете отображение (и по расширению display1), как вы думаете, что делаете. –