import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;


public class Calculator extends JFrame {


static boolean setF=false,nextN=false;

static double fistN,secN;

static int cc=0;//0기본

private JPanel panel;

private JTextField tField;

private JTextField tField2;//확인용 

private JButton[] buttons;

private String[] labels=

{

"Backspace"," "," ","CE","C",

"7","8","9","/","sqrt",

"4","5","6","X","%",

"1","2","3","-","1/x",

"0","+/-",".","+","="

};

public Calculator()

{

setTitle("계산기");

tField = new JTextField(35);

tField2 = new JTextField(35);//확인용

panel = new JPanel();

tField.setText("0");

tField.setEnabled(false);

panel.setLayout(new GridLayout(0,5,3,3));

buttons = new JButton[25];

int index = 0;

for(int rows = 0;rows<5;rows++)

{

for(int cols = 0;cols<5;cols++)

{

buttons[index] = new JButton(labels[index]);

if(cols>=3)

buttons[index].setForeground(Color.red);

else

buttons[index].setForeground(Color.blue);

buttons[index].setBackground(Color.yellow);

buttons[index].addActionListener(new NL());

panel.add(buttons[index]);

index++;

}

}

add(tField,BorderLayout.NORTH);

add(panel, BorderLayout.CENTER);

add(tField2,BorderLayout.SOUTH);

setVisible(true);

pack();

}

private class NL implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==buttons[0]) //backspace

{

if(tField.getText().length()==0);

else

tField.setText(tField.getText().substring(0,tField.getText().length()-1));

};

if(e.getSource()==buttons[9])//sqrt

{

tField.setText(Double.toString(Math.sqrt(Double.parseDouble(tField.getText()))));

};


if(e.getSource()==buttons[22])//.(도트)

{


if(!setF)

{

if(tField.getText().length()==0)

tField.setText(tField.getText()+"0.");

else

tField.setText(tField.getText()+".");

};

setF=true;

cc++;

};

if(e.getSource()==buttons[23])//+

{

};

if(e.getSource()==buttons[24])//=

{

};

for(int x=1;x<5;x++)

for(int y=0;y<3;y++)

{

if(e.getSource()==buttons[x*5+y])

{

tField.setText(tField.getText() + buttons[x*5+y].getText());

};


if (x==5)

break;

};

tField2.setText("firstN  "+fistN+"  secN  "+secN+" setF  "+setF+"  nextN  "+nextN+" cc "+cc);//확인용

}

}


public static void main(String[] args) {

// TODO Auto-generated method stub


Calculator s = new Calculator();

}


}





//.(도트)

주석이 달린게 문제인데

if문을 무시하고 둘다 실행되기도 하고

. 한번 붙이고 나면 실행안되게 조건 붙여놨는데도

게속 버튼 누를때마다 실행되네요..

EX) 0.->0......


도와주세요 ㅠㅠ

과제하는데 막혀서 힘드네요..