Problem z kalkulatorem

0

Witam, mam pytanie jak zrobić, aby po wpisaniu danej liczby np. 728 była ona brana jako podstawa do dalszych działań? Wrzucam kod, w którym mimo napisania 728 jako podstawy używana jest tylko 7. Czy ktoś ma jakiś pomysł?

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class FourP {
	public static void main(String[]args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				Frame frame=new Frame();
				}
		});
	}

}
class Frame extends JFrame
{
	public Frame() 
	{
		setBounds(100,100,250,400);
		add(new CalculatorPanel());
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}
	
}


class CalculatorPanel extends JPanel{
	private JButton display;
	private JPanel panel;
	private double result;
	private String lastCommand;
	private boolean start;
	private boolean first;
	
	public CalculatorPanel() {
		setLayout(new BorderLayout());
		result=0;
		lastCommand="=";
		first=true;
		start=false;
		
		
		
		
		
	display=new JButton("0");
	display.setEnabled(false); 
	add(display, BorderLayout.PAGE_START);
	
	
	ActionListener insert=new InsertAction();
	ActionListener command=new CommandAction();
	
	
	panel=new JPanel();
	panel.setLayout(new GridLayout(4,4));
	
	addButton("7",insert);
	addButton("8",insert);
	addButton("9",insert);
	addButton("/",command);
	
	addButton("4",insert);
	addButton("5",insert);
	addButton("6",insert);
	addButton("*",command);
	
	addButton("1",insert);
	addButton("2",insert);
	addButton("3",insert);
	addButton("-",command);
	
	addButton("0",insert);
	addButton(".",insert);
	addButton("=",command);
	addButton("+",command);
	
	add(panel, BorderLayout.CENTER);
	
	}
	
	private void addButton(String label, ActionListener listener)
	{
		JButton button=new JButton(label);
		button.addActionListener(listener);
		panel.add(button);
		
	}
	
	

	
	private class InsertAction implements ActionListener
	{
		@Override
		public void actionPerformed(ActionEvent event) {
			String input=event.getActionCommand();
			
			if(first==true)
			{
		    display.setText(""+input);
		    double l=Double.parseDouble(display.getText());
		    result=l;
		    first=false;
		    start=true;
		    
		    
			}
			
			
			if(start==true)
			{
			display.setText("");
			start=false;
			}
			display.setText(display.getText()+input);
		}
		
	}
	
	
	private class CommandAction implements ActionListener
	{

		@Override
		public void actionPerformed(ActionEvent event) {
			String command=event.getActionCommand();
			
			if(start)
			{
				if(command.equals("="))
				{
					display.setText(command);
					start=false;
				}
				else lastCommand=command;
			}
			else
			{
				calculate(Double.parseDouble(display.getText()));
				lastCommand=command;
				start=true;
			}
		}
		
	}
	
	
	
	public void calculate(double x)
	{
		if(lastCommand.equals("+"))  result +=x; 
		if(lastCommand.equals("-")) result-=x;
		if(lastCommand.equals("/")) result /=x;
		if(lastCommand.equals("*"))  result *=x;
		
		if(first==true) {
		display.setText(display.getText());
		}
		else
			display.setText(""+result);
		
	}

	
	
}
0

Bo ustawiasz result tylko za pierwszym razem czyli kiedy podajesz pierwszą cyfrę:

		if (first == true) {
				display.setText("" + input);
				double l = Double.parseDouble(display.getText());
				result = l;
				first = false;
				start = true;

			}

a potem przy kliknięciu + używasz tego resulta w metodzie calculate. Powinieneś tego resulta odświeżać za każdym razem gdy wpiszesz kolejną cyfrę. Ciężko mi poprawić te aplikację bo strasznie po chińsku jest to wszystko napisane :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1