계산기 x^2,sin,cos,tan 결과값이 틀리게나와요.
가을c
샘플코딩에서 이것저것 제가 수정하면서.....만든거구요.위에 문제중 못하고 있는게... 아래부분입니다. 아래분 리플보고..
매소드함수써써계산기 완료했습니다. (리플 감사합니다.)
================================================
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.lang.Math;
class Calculator extends JFrame implements ActionListener{ // ActionListener 포함
public JTextField resultText;
public JButton buttonArray[];
public JPanel buttonGroup;
public JButton clearButton;
public JButton exitButton;
public double result=0; // 결과 값
public boolean clearText=true;
public int previousEventName=0; // 이전 연산자 이벤트 정보
public Calculator(String title){
clearButton = new JButton(Clear);
exitButton = new JButton(종료하기);
// 결과 표시
resultText = new JTextField(50);
setLayout(new BorderLayout());
resultText.setEditable(false);
// 버튼 구성
buttonGroup = new JPanel();
buttonArray = new JButton[20];
// 버튼 생성
for (int i = 0; i = 9; i++)
{
buttonArray [i]= new JButton(Integer.toString(i));
}
buttonArray[10] = new JButton(/);
buttonArray[11] = new JButton(*);
buttonArray[12] = new JButton(-);
buttonArray[13] = new JButton(+);
buttonArray[14] = new JButton(.);
buttonArray[15] = new JButton(x^2);
buttonArray[16] = new JButton(sin);
buttonArray[17] = new JButton(cos);
buttonArray[18] = new JButton(tan);
buttonArray[19] = new JButton(=);
buttonGroup.setLayout(new GridLayout(4,5));
for( int i = 7; i = 10; i++)
{
buttonGroup.add(buttonArray[i]);
}
buttonGroup.add(buttonArray[16]);
for( int i = 4; i = 6; i++)
{
buttonGroup.add(buttonArray[i]);
}
buttonGroup.add(buttonArray[11]);
buttonGroup.add(buttonArray[17]);
for( int i = 1; i = 3; i++)
{
buttonGroup.add(buttonArray[i]);
}
buttonGroup.add(buttonArray[12]);
buttonGroup.add(buttonArray[18]);
buttonGroup.add(buttonArray[0]);
for( int i = 15; i = 13; i--)
{
buttonGroup.add(buttonArray[i]);
}
buttonGroup.add(buttonArray[19]);
;
add(resultText, BorderLayout.NORTH);
add(buttonGroup, BorderLayout.CENTER);
add(clearButton, BorderLayout.EAST);
add(exitButton, BorderLayout.SOUTH);
// 메뉴 구성
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu fileMenu = new JMenu(File);
JMenu editMenu = new JMenu(Edit);
menuBar.add(fileMenu);
menuBar.add(editMenu);
// 풀다운 메뉴 추가
JMenuItem newMenuItem = fileMenu.add(New);
fileMenu.addSeparator();
JMenuItem openMenuItem = fileMenu.add(Open);
fileMenu.addSeparator();
JMenuItem exitMenuItem = fileMenu.add(Exit);JMenuItem cutMenuItem = editMenu.add(Cut);
editMenu.addSeparator();
JMenuItem clearMenuItem = editMenu.add(ClearM);
// 이벤트 등록
for ( int i = 0; i buttonArray.length; i++)
{
buttonArray[i].addActionListener(this);
}
clearButton.addActionListener(this);
exitButton.addActionListener(this);
clearMenuItem.addActionListener(this); // 메뉴 이벤트 등록
exitMenuItem.addActionListener(this);
setTitle(title);
setSize(700,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}public void actionPerformed(ActionEvent e)
{
String eventName=;
String command=e.getActionCommand();
int numberButton=0;
eventName=e.getActionCommand(); // getSource()
if(command.equals(종료하기) | command.equals(Exit)){
System.exit(0);
}
else if(eventName == Clear | eventName == ClearM){ // Clear 버튼 및 메뉴의 ClearM
resultText.setText();
}
else if(eventName == .){ // . 버튼 이벤트인 경우
resultText.setText(resultText.getText() + eventName);
}
else if(eventName == /){// / 버튼 이벤트인 경우
result = Double.valueOf(resultText.getText());
previousEventName=10; // 나누기
clearText=true;
}
else if(eventName == *){// * 버튼 이벤트인 경우
result = Double.valueOf(resultText.getText());
previousEventName=20; // 곱하기
clearText=true;
}
else if(eventName == +){
result = Double.valueOf(resultText.getText());
previousEventName=30;
clearText=true;
}
else if(eventName == -){
result = Double.valueOf(resultText.getText());
previousEventName=40;
&;clearText=true;
}else if(eventName == x^2){
double x = Double.parseDouble(resultText.getText());
result = x*x;
clearText=true;
resultText.setText(Double.toString(result));
}
else if(eventName == sin){
double x = Double.parseDouble(resultText.getText());
result = Math.sin(x);
clearText=true;
resultText.setText(Double.toString(result));
}
else if(eventName == cos){
double x = Double.parseDouble(resultText.getText());
result = Math.cos(x);
clearText=true;
resultText.setText(Double.toString(result));
}
else if(eventName == tan){
double x = Double.parseDouble(resultText.getText());
result = Math.tan(x);
clearText=true;
resultText.setText(Double.toString(result));
}else if(eventName == =){ // = 버튼 이벤트인 경우
switch(previousEventName){
case 10: // 나누기
result /= Double.valueOf(resultText.getText());
clearText=true;
break;
case 20:// 곱하기
result *= Double.valueOf(resultText.getText());
clearText=true;
break;
case 30:
result += Double.valueOf(resultText.getText());
clearText=true;
break;
case 40:
result -= Double.valueOf(resultText.getText());
clearText=true;
break;
}
resultText.setText(Double.toString(result));}
else{ // 숫자 버튼 이벤트
numberButton=Integer.parseInt(eventName);
switch(numberButton){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
if(clearText){ // 연산자 버튼 입력 했을 경우 화면 삭제
resultText.setText();
clearText=false;
}
resultText.setText(resultText.getText() + numberButton);
break;
}
}
}}
public class JavaCalcu {
public static void main(String[] args){
new Calculator(계산기);
}
}
===========================================================================