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

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 58337
45596 신발 추천좀여~ ㅎㅎ file [19] 오뤼날다 2013-09-11 212
45595 dvd에 있는 파일 컴퓨터로 옮기는 방법이요 [3] 1 2013-09-17 212
45594 CMA 어디꺼 쓰시나요 ? [3] ^^ 2013-10-01 212
45593 시즌방 김치주문하는데 없나요? [1] 라이더스™ 2013-11-19 212
45592 퇴직금 관련 질문좀 드릴께요 [6] 직장 2013-11-23 212
45591 내일 용평 vs 하이원 어디가 나을까요?! [9] CarreraGT 2013-11-23 212
45590 하이원 강원랜드요~ [3] 파쓰 2013-12-04 212
45589 동호회... [3] 익스트림매니아 2014-01-04 212
45588 31일 하이원 리프트 및 렌탈 문의 드립니다 [1] 天災™ 2020-01-30 212
45587 비발디 시즌권 동반 할인 [3] Editor.R 2020-12-04 212
45586 미러리스 DSR 중고 렌즈는 어디서 팔아야 하나요? [3] guycool 2023-08-25 212
45585 엑셀에서 [1] mr.kim_ 2012-05-25 213
45584 현대사 관련 읽을만한 책 추천 부탁드려요~ [8] 뾰로롱뽀더 2012-09-13 213
45583 다들 비시즌엔 뭐하세요?? [6] 정적 2012-09-24 213
45582 대명 시즌권 가격이요 [3] 기여워 2012-11-04 213
45581 혹시 쿼드비트 이어폰 써보신분? [11] 시레기 2012-11-16 213
45580 웰리힐리 홈피 들어가지시는 분? [6] Bighole 2012-11-17 213
45579 어제 1월 6일 무주에서 부상당한 스키어 보신분?? [1] 날아라제시 2013-01-07 213
45578 오늘(2/5) 베어스 가는 도로 사정 괜찮을까요? [8] 곰팅이 2013-02-05 213
45577 혹시라도 안쓰는 kt 피쳐폰있으신분 계세요 아님 sk라도 있으신분 BINGO 2013-03-30 213