계산기(자바)

javabasic 2010. 7. 16. 15:11


// GridBagLayout을 이용하여 계산기 프로그램

import java.awt.*;
import java.awt.event.*;

public class Calculator extends Frame{
 GridBagLayout layout = new GridBagLayout();
 GridBagConstraints constraints = new GridBagConstraints();
 Button b0, b1, b2, b3, b4, b5, b6, b7, b8, b9,
        bPlus, bMinus, bMul, bDiv, bEqual, bClear, bDot;
        Label T1;
   

   public static void main (String[] args) {
         Calculator aWindow = new Calculator ();
 }//메인끗

 public Calculator () {
        setTitle ("GridBagLayout Window");
        setLayout (layout);
 
        constraints.fill = GridBagConstraints.BOTH;
        constraints.insets = new Insets (5, 5, 5, 5);
        constraints.weightx = constraints.weighty = 1.0;
     
        //버튼을 생성하여 위치를 정한 다음, addComponent()를 호출한다.
 T1 =  new Label("",Label.RIGHT);

 addComponent (0, 0, 4, 1, T1);

        addComponent (0, 1, 1, 1, bClear = new Button ("CL"));

        addComponent (0, 2, 1, 1, b1 = new Button ("1"));

        addComponent (0, 3, 1, 1, b4 = new Button ("4"));
        addComponent (0, 4, 1, 1, b7 = new Button ("7"));
        addComponent (0, 5, 2, 1, b0 = new Button ("0"));

        addComponent (1, 1, 1, 1, bDiv = new Button ("/"));
        addComponent (1, 2, 1, 1, b2 = new Button ("2"));
        addComponent (1, 3, 1, 1, b5 = new Button ("5"));
        addComponent (1, 4, 1, 1, b8 = new Button ("8"));
     
        addComponent (2, 1, 1, 1, bMul = new Button ("*"));
        addComponent (2, 2, 1, 1, b3 = new Button ("3"));
        addComponent (2, 3, 1, 1, b6 = new Button ("6"));
        addComponent (2, 4, 1, 1, b9 = new Button ("9"));
        addComponent (2, 5, 1, 1, bDot = new Button ("."));
     
        addComponent (3, 1, 1, 1, bMinus = new Button ("-"));
        addComponent (3, 2, 1, 2, bPlus = new Button ("+"));
        addComponent (3, 4, 1, 2, bEqual = new Button ("="));

 bClear.addActionListener(new scaButtonHandler(T1));
 b1.addActionListener(new scaButtonHandler(T1));
 b2.addActionListener(new scaButtonHandler(T1));
 b3.addActionListener(new scaButtonHandler(T1));
 b4.addActionListener(new scaButtonHandler(T1));
 b5.addActionListener(new scaButtonHandler(T1));
 b6.addActionListener(new scaButtonHandler(T1));
 b7.addActionListener(new scaButtonHandler(T1));
 b8.addActionListener(new scaButtonHandler(T1));
 b9.addActionListener(new scaButtonHandler(T1));
 b0.addActionListener(new scaButtonHandler(T1));
 bDot.addActionListener(new scaButtonHandler(T1));

 bMul.addActionListener(new scaButtonHandler(T1));
 bPlus.addActionListener(new scaButtonHandler(T1));
 bMinus.addActionListener(new scaButtonHandler(T1));
 bDiv.addActionListener(new scaButtonHandler(T1));
 T1.setText("0");
 bEqual.addActionListener(new scaButtonHandler(T1));
 FlowLayout Flow1 = new FlowLayout();
 Flow1.setAlignment(FlowLayout.RIGHT);
        addWindowListener (new WindowHandler());
        setBounds (10,10,250,300);
        setVisible (true);
    }//생성자 끗
 
    // 인수로 컴포넌트와 위치를 넘겨받아, 윈도우에 추가한다.
    public void addComponent (int x, int y, int w, int h, Component theComponent) {
        constraints.gridx = x;
        constraints.gridy = y;
        constraints.gridwidth = w;
        constraints.gridheight = h;
        layout.setConstraints (theComponent, constraints);
        add (theComponent);
    }

    class WindowHandler extends WindowAdapter {
        public void windowClosing (WindowEvent e) {
            setVisible (false);
            dispose();
            System.exit (0);
        }
    }

 int FirstValue=0;
 int SecondValue=0;
 int TempValue=0;

 

}//calculator끗

/*
class ButtonControl implements ActionListener{
   public void actionPerformed(ActionEvent ae){
 
  T1.setText(T1.getText() + ((Button)ae.getSource()).getLabel() );

    }//액션펄폼드끗
}//버튼콘트롤 끗/
*/


class scaButtonHandler implements ActionListener{
   Label T1;
   String StText=new String("0");

   static Double TempNumber = new Double(0);
   static Double FirstNumber = new Double(0);
   static Double SecondNumber = new Double(0);
   static Double ReseltNumber = new Double(0);
   static int iReseltNumber = 0;
   static char oper = 0;
   static int swit = 0;
   static int lapperswit = 0;
   static int Reselt=0;
   scaButtonHandler(Label paraField){
 T1 = paraField;
   }
   Double Lapper(Double FNmb,Double SNmb,char oper){
 if(oper == '+'){
  return (FNmb+SNmb);
 }
 else if(oper == '-'){
  return (FNmb-SNmb);
 }
 else if(oper == '/'){
  if(SNmb==0) return 0.0;  
  else return (FNmb/SNmb);
 }
 else if(oper == '*'){
  return (FNmb*SNmb);
 }
 return 0.0;
   }
   public void actionPerformed(ActionEvent ae){

  if(((Button)ae.getSource()).getLabel()=="="){
    
    if(FirstNumber==0) ReseltNumber = Lapper(ReseltNumber,SecondNumber,oper);
    else
    {
     SecondNumber = Double.parseDouble(T1.getText());
     ReseltNumber = Lapper(FirstNumber,SecondNumber,oper);
    }
    FirstNumber = 0.0;
    if(ReseltNumber%1==0) T1.setText(ReseltNumber.intValue()+"");
    else T1.setText(ReseltNumber+"");
    Reselt=1;
  }
  else if(((Button)ae.getSource()).getLabel()=="+"){
   if(FirstNumber == 0)
   {
    FirstNumber = Double.parseDouble(T1.getText());
    lapperswit=1;
    T1.setText("0");
    oper = '+';
    swit = 0;
   }
   else
   {
    if(lapperswit==0)
    {
     SecondNumber = Double.parseDouble(T1.getText()); 
     FirstNumber = Lapper(FirstNumber,SecondNumber,oper);
     if(FirstNumber%1==0) T1.setText(FirstNumber.intValue()+"");
     else T1.setText(FirstNumber+"");
     lapperswit=1;
     oper = '+';
    }
   }
  }
  else if(((Button)ae.getSource()).getLabel()=="-"){
   if(FirstNumber == 0)
   {
    FirstNumber = Double.parseDouble(T1.getText());
    lapperswit=1;
    T1.setText("0");
    oper = '-';
    swit = 0;
   }
   else
   {
    if(lapperswit==0)
    {
     SecondNumber = Double.parseDouble(T1.getText()); 
     FirstNumber = Lapper(FirstNumber,SecondNumber,oper);
     if(FirstNumber%1==0) T1.setText(FirstNumber.intValue()+"");
     else T1.setText(FirstNumber+"");
     lapperswit=1;
     oper = '-';
    }
   }
  }
  else if(((Button)ae.getSource()).getLabel()=="*"){
   if(FirstNumber == 0)
   {
    FirstNumber = Double.parseDouble(T1.getText());
    lapperswit=1;
    T1.setText("0");
    oper = '*';
    swit = 0;
   }
   else
   {
    if(lapperswit==0)
    {
     SecondNumber = Double.parseDouble(T1.getText()); 
     FirstNumber = Lapper(FirstNumber,SecondNumber,oper);
     if(FirstNumber%1==0) T1.setText(FirstNumber.intValue()+"");
     else T1.setText(FirstNumber+"");
     lapperswit=1;
     oper = '*';
    }
   }
  }
  else if(((Button)ae.getSource()).getLabel()=="/"){
   if(FirstNumber == 0)
   {
    FirstNumber = Double.parseDouble(T1.getText());
    lapperswit=1;
    T1.setText("0");
    oper = '/';
    swit = 0;
   }
   else
   {
    if(lapperswit==0)
    {
     SecondNumber = Double.parseDouble(T1.getText()); 
     FirstNumber = Lapper(FirstNumber,SecondNumber,oper);
     if(FirstNumber%1==0) T1.setText(FirstNumber.intValue()+"");
     else T1.setText(FirstNumber+"");
     lapperswit=1;
     oper = '/';
    }
   }   
  }
  // "."을 눌럿을경우
  else if(((Button)ae.getSource()).getLabel()=="."){
   if(swit==0)
   {
    T1.setText(T1.getText() +((Button)ae.getSource()).getLabel()+"0");
    swit = 1;
   }
  }
  // "CL"을 눌럿을경우
  else if(((Button)ae.getSource()).getLabel()=="CL"){
   T1.setText("0");
   swit = 0;
   lapperswit=0;
   TempNumber = 0.0;
   FirstNumber = 0.0;
   SecondNumber = 0.0;
   ReseltNumber =  0.0;;
   TempNumber = Double.parseDouble(T1.getText());
  }
  // 숫자를 눌럿을경우
  else if(((Button)ae.getSource()).getLabel()=="0"){
   if(Double.parseDouble(T1.getText())!=0)
   {
    T1.setText(T1.getText() +((Button)ae.getSource()).getLabel());
    TempNumber = Double.parseDouble(T1.getText());
   }
  }
  else
  {
   if(Reselt==1)
   {
    T1.setText("0");
    Reselt=0;
   }
   if(lapperswit==1)
   {
    T1.setText("0");
    lapperswit=0;
   }
   if(Double.parseDouble(T1.getText())!=0)
   {
    if((Double.parseDouble(T1.getText())%1)==0)
    {
     if(swit==1)
     {    
      T1.setText((int)(Double.parseDouble(T1.getText())/1) +"."+((Button)ae.getSource()).getLabel());
      TempNumber = Double.parseDouble(T1.getText()); 
     }
     else
     {
      T1.setText(T1.getText()+((Button)ae.getSource()).getLabel());
      TempNumber = Double.parseDouble(T1.getText());
     }  
    }
    else
    {
     T1.setText(T1.getText()+((Button)ae.getSource()).getLabel());
     TempNumber = Double.parseDouble(T1.getText());
    } 
   }
   else
   {
    if(swit==1)
    {
     T1.setText("0." +((Button)ae.getSource()).getLabel());
     TempNumber = Double.parseDouble(T1.getText()); 
    }    
    else
    {
     T1.setText(((Button)ae.getSource()).getLabel());
     TempNumber = Double.parseDouble(T1.getText());   
    }
   }
  }
    
  
    }//액션펄폼드끗


}//버튼콘트롤 끗/

 

'javabasic' 카테고리의 다른 글

자바강의2  (0) 2010.07.22
자바 강의  (0) 2010.07.22
연습문제 3장 3번문제  (0) 2010.07.07
3장 2번문제  (0) 2010.07.07
연습문제3장1번문제  (0) 2010.07.07
Posted by 지화명이
,

3번문제) 계산기프로그램으로써 사용자로부터 두수를 입력받고 연산값을 입력받아 해당 결과를    제출하는 프로그램을 짜라. (5번을 선택할 때까지 프로그램은 계속된다...)


import java.io.*;


  

class OperExm{
 public static void main(String args[]) throws IOException{

  System.out.println("메뉴에서 고르세요 ~~~~");
  System.out.println("1.덧셈");
  System.out.println("2.뺄셈");
  System.out.println("3.곱셈");
  System.out.println("4.나눗셈");
  System.out.println("5.나가기");

  BufferedReader stdin=new BufferedReader
    (new InputStreamReader(System.in));
  int num1,num2,choose;
  
  System.out.print("Enter the number : ");

  while(true){
  choose = Integer.parseInt (stdin.readLine());

  
  System.out.print("Enter the first number : ");
   num1 = Integer.parseInt (stdin.readLine());

         System.out.print ("Enter the second number : ");
         num2 = Integer.parseInt (stdin.readLine());

         switch(choose){
  case 1:
   System.out.println(num1+"+"+num2+"="+(num1+num2));
   break;
  case 2:
   System.out.println(num1+"-"+num2+"="+(num1-num2));
   break;
  case 3:
   System.out.println(num1+"*"+num2+"="+(num1*num2));
   break;
  case 4:
   System.out.println(num1+"/"+num2+"="+(num1/num2));
   break;

  }//switch
  System.out.println();
 
  System.out.println("메뉴에서 고르세요 ~~~~");
  System.out.println("1.덧셈");
  System.out.println("2.뺄셈");
  System.out.println("3.곱셈");
  System.out.println("4.나눗셈");
  System.out.println("5.나가기");

  System.out.print("Enter the number : ");
  choose = Integer.parseInt (stdin.readLine());
  if(choose==5){
   break;
  }
  
  }//While
 }//main

}//OperExm

'javabasic' 카테고리의 다른 글

자바 강의  (0) 2010.07.22
계산기(자바)  (0) 2010.07.16
3장 2번문제  (0) 2010.07.07
연습문제3장1번문제  (0) 2010.07.07
Runnable 사용법  (0) 2010.07.06
Posted by 지화명이
,

3장 2번문제

javabasic 2010. 7. 7. 09:14

2번문제) 구구단 출력 시켜라
===================================
import java.io.*;
import java.lang.*;

class Gugudan{
 public static void main(String[] args){
 // for(int i=2;i<=9;++i)
 // {
 int i=2;
   for(int j=1;9>=j;++j)
   {
    for(int k=0;k<8;++k){
    //System.out.print((i+k)+"*"+j+"="+((i+k)*j)+"  ");
    System.out.printf("%d*%d=%2d ",(i+k),j,((i+k)*j));
    }//int k
    System.out.println();
   }//int j
   System.out.println();
 // }//int i 

 }//main

}//class

'javabasic' 카테고리의 다른 글

계산기(자바)  (0) 2010.07.16
연습문제 3장 3번문제  (0) 2010.07.07
연습문제3장1번문제  (0) 2010.07.07
Runnable 사용법  (0) 2010.07.06
Thread 사용법  (0) 2010.07.06
Posted by 지화명이
,