[기타묻고답하기 이용안내]

ca.jpg

여기까지 만든거구요. 문제중 못하고 있는게... 아래부분입니다.

********************************************************** 

제곱(x^2),삼각함수 계산(sin,cos,tan) 이벤트 하는거랑요.

연산 버튼 클릭 후 =으로 결과값 출력후..

다시 숫자 버튼 클릭할 경우 화면 클리어 되게 하는거요.

**********************************************************

 

현재까지 만든코팅부분입니다.

매소드 함수 쓰로고 하느데 어떻게 써야할지 모르곘네여. ㅜㅜ

 

./to 로되어있는부분은 /뺴주시면 되요. 헝글 게시판이 ./to 에서 /뺀면 금지단어라 /임의로 넣은것입니다.

 

================================================================================

 

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

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 == "="){ //  = 버튼 이벤트인 경우
   switch(previousEventName){
   case 10: // 나누기
    result /= Double.valueOf(resultText.getText());
    break;
   case 20:// 곱하기
    result *= Double.valueOf(resultText.getText());
    break;
   case 30:
    result += Double.valueOf(resultText.getText());
    break;
   case 40:
    result -= Double.valueOf(resultText.getText());
    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("계산기");
  
 }
}

======================================================================

첨부
엮인글 :

캐치보올

2011.05.25 15:08:25
*.145.140.176

pow, sin, cos, tan 등의 함수는 java.lang.Math 에 있습니다.

pow(x,y) x the base of the operation. 

y the exponent of the operation

3의 제곱은 pow(3,2) 가 되겠네요.

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 [기타묻고답하기 게시판 이용안내] [1] Rider 2017-03-14 54449
45425 강촌 시즌권.. [4] 보든가봉가 2013-09-12 209
45424 미팅 이후? [4] 환타킴 2013-09-14 209
45423 인터넷 이력서 어디서 구하나요? [2] 럭셜보더 2013-10-22 209
45422 모자를 찾고 있어요 [2] Chance 2013-10-25 209
45421 인터넷으로 과일주문요~ [7] SOO  2013-11-26 209
45420 하이원 시즌권은 언제 구매할수 있나요 [2] stevebuscemi 2019-12-24 209
45419 미세먼지 마스크 끼고 타시는분 있나요? [3] 캐네디언 2020-01-20 209
45418 접촉사고 보험 관련 문의드려요. [1] 사고 ㅠ 2011-12-26 210
45417 키주우신분 보드쿨 2012-03-27 210
45416 키높이구두 조언좀해주세요 [1] 하이원프리덤 2012-06-26 210
45415 동남아 여행 잘 아시는 분들 도와주세요. [2] 여의봉봉 2012-07-29 210
45414 오늘(2/5) 베어스 가는 도로 사정 괜찮을까요? [8] 곰팅이 2013-02-05 210
45413 연휴 마지막날 에 사람 많을 까요? [4] 양보다질 2013-02-08 210
45412 영화 , 음악 안전하게...........다운받은곳. [5] 1111 2013-02-27 210
45411 보도 접고 운동을 하고 싶은데 추천 바랍니다. [17] 김주환_900222 2013-03-08 210
45410 스케이트 보드 타시는분 계신가요?? [2] lilwayne 2013-04-11 210
45409 써커펀치 OST [1] 곽진호 2013-05-10 210
45408 밑에 부모님이 쓸 핸드폰이요.. CJ갤럭시 어떤가요? [1] 훈녀훈남 2013-05-23 210
45407 헝글에 남자 여자 비율이 우찌될지요?? [6] 탁탁탁탁 2013-06-11 210
45406 블로그 보다가 궁금한게 있어서.. [8] 진짜초보임 2013-08-12 210