계산기 질문좀 드릴게요
난슬
이 소스를 실행하였을 경우
123456789*123456789
이런식으로 계산을 하려하면 결과값이 이상하더라구요
왜 그런가요?
가능하시다면 수정도 해주시면 감사하겠습니다import java.awt.*;
import java.awt.event.*;//이벤트 패키지 포함
import javax.swing.*;
class Calculator
{
public static void main(String args[])
{
CalculatorFrame frame = new CalculatorFrame();//자신의 클래스로 부터 객체 생성
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//프레임 종료버튼을 누르면 프레임을 닫고 프로그램을 종료
frame.setVisible(true);// 프레임을 나타낸다
frame.setSize(500,560);// 프레임 사이즈 설정
}
}
class CalculatorFrame extends JFrame//JFrame 상속
{
public CalculatorFrame()
{
setTitle(200631569 하헌영); //프레임의 타이틀을 설정
CalculatorPanel panel = new CalculatorPanel();
add(panel);
pack();
}
}
class CalculatorPanel extends JPanel
{
public CalculatorPanel()
{
setLayout(new BorderLayout());//new 컴포넌트를 프레임에 추가
result = 0;
lastCommand = =;
start = true;
display = new JLabel(0); //초기에 보여질 값 설정
display.setEnabled(false);
add(North,display);// 상단으로 초기 위치 설정
ActionListener insert = new InsertAction();
ActionListener command = new CommandAction();
panel = new JPanel();// 판넬 생성
panel.setLayout(new GridLayout(4,4));// 4*4 배열로 된 GridLayout 객체 생성
//버튼 추가
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(Center,panel);
}
private void addButton(String label, ActionListener listener)
{
JButton button = new JButton(label);
button.addActionListener(listener);
panel.add(button);
}
private class InsertAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String input = event.getActionCommand();
if(start){
display.setText();
start = false;
}
display.setText(display.getText()+input);
}
}
private class CommandAction implements ActionListener//버튼의 이벤트 처리위하여 액션리스너 포함
{
public void actionPerformed(ActionEvent event)
{
String command = event.getActionCommand();
if(start)
{
if(command.equals())
{
display.setText(command);
start = false;
}else{
lastCommand = command;
}
}else{
calculator(Double.parseDouble(display.getText()));
lastCommand = command;
start = true;
}
}
}
public void calculator(double x){
if(lastCommand.equals(+)) result += x;
else if(lastCommand.equals(-)) result -= x;
else if(lastCommand.equals(*)) result *= x;
else if(lastCommand.equals(/)) result /= x;
else if(lastCommand.equals(=)) result = x;
display.setText( + result);
}
private JLabel display;
private JPanel panel;
private double result;
private String lastCommand;
private boolean start;
}
-
티나
강좌에 보면..있습니다 ~_~
-
푸른들
그 부분을 수정해야 하는데 어떻게 해야 하는지를 몰라서요..
-
김애교
계산값이 자료형이 표현 할 수 있는 한계치를 벗어난듯 보입니다