ÇÁ·Î±×·¡¹Ö

 3206, 1/161 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   daze1234
   ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö °è»ê±â ÇÁ·Î±×·¥ Áú¹®µå¸³´Ï´Ù.

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=6589 [º¹»ç]


ÀÚ¹Ù ÇÁ·Î±×·¡¹ÖÀ¸·Î ¾ÆÁÖ °£´ÜÇÏ°í ½ÉÇÃÇÑ °è»ê±â¸¦ ¸¸µé°íÀÚ ÇÕ´Ï´Ù.

ÀÚ¹Ù¿¡ Àü¹®ÀûÀÎ Áö½ÄÀÌ ÀÖ´Â°Ç ¾Æ´Ï¿À¸ç ÄÚµå ÀÛ¼ºÀ» Àß ÇÒ¼ö ¾ø¾î¼­ µµ¿òÀ» ¹Þ°í°¡ ±ÛÀ» ÀÛ¼ºÇÏ°Ô µÇ¾ú½À´Ï´Ù.

ºÎŹµå¸³´Ï´Ù..

  Hit : 4519     Date : 2017/10/27 12:30



    
lwlstjdl ±¸±Û¸µ¿¡¼­ °Ë»öÇÏ½Ã¸é ¼Ò½ºÄÚµå ¸¹ÀÌ ³ª¿À´Âµ¥ ±×°Å º¸½Ã¸é µÉ°Í °°¾Æ¿ä. 2017/11/27  
ÇѽÂÀç import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.math.BigDecimal;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

//==========================
// Swing °è»ê±â
// @Author ¿ø°­¹Î
//==========================
public class JCalculator
{
private JFrame frame;
private ActionListener btnClickListener;

/** °á°ú°ª º¯¼ö */
private BigDecimal resultValue;

/** ÇöÀç ÀÔ·ÂµÈ °ªÀ» ÀúÀåÇØ ³õ´Â º¯¼ö */
private BigDecimal memoryValue;

/** ±âÁ¸ Ç¥±âµÈ ³»¿ëÀ» Áö¿ì°í »õ·Î ÀÔ·ÂÇÒÁö ¿©ºÎ */
private Boolean isNewValue;

/** ÇöÀç ¼±ÅÃµÈ ¿¬»ê ¹öÆ° */
private JButton selectedOperBtn;

private static final String divideErrorText = "0À¸·Î ³ª´­ ¼ö ¾ø½À´Ï´Ù.";

private Font buttonFont;
private Container container;
private JTextField txt;
private JLabel mLabel;
private JButton plusBtn;
private JButton minusBtn;
private JButton multBtn;
private JButton divBtn;
private JButton enterBtn;

//=============================
//
// Start Point
//
//=============================

public void create()
{
this.init();
this.createUI();
this.setEventListener();
}

//=============================
//
// Private Methods
//
//=============================

/** ÃʱâÈ­ */
private void init()
{
this.buttonFont = new Font("Arial", 0, 16);

this.resultValue = new BigDecimal(0);
this.memoryValue = new BigDecimal(0);
this.selectedOperBtn = null;
this.isNewValue = true;

// ¹öÆ° Ŭ¸¯ ¸®½º³Ê
this.btnClickListener = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String txtValue = txt.getText();

JButton b = (JButton) e.getSource();
String _name = b.getText();
switch(_name)
{
case "M+":
if(txtValue.equals(divideErrorText)) return;

mLabel.setVisible(true);
memoryValue = memoryValue.add(new BigDecimal(Float.valueOf(txtValue)));
isNewValue = true;
break;

case "M-":
if(txtValue.equals(divideErrorText)) return;

mLabel.setVisible(true);
memoryValue = memoryValue.subtract(new BigDecimal(Float.valueOf(txtValue)));
isNewValue = true;
break;

case "MR":
Float f = memoryValue.floatValue();
Integer i = memoryValue.intValue();
if(f.equals(Float.valueOf(i))) txt.setText(String.valueOf(i));
else txt.setText(String.valueOf(f));
isNewValue = true;
break;

case "MC":
mLabel.setVisible(false);
memoryValue = new BigDecimal(0);
isNewValue = true;
break;

case "/":
case "*":
case "+":
case "-":
inputOperate(b);
break;

case "¡ç":
inputBackspace();
break;

case "¡î":
calculateSquareRoot();
break;

case "=":
inputEnter();
break;

case "C":
inputEscape();
break;

default:
pressNumberPad(_name);
break;
}
}
};
}

/** UI »ý¼º */
private void createUI()
{
frame = new JFrame("JButton Test");

container = new Container();
frame.getContentPane().add(container);

this.mLabel = new JLabel();
this.mLabel.setText("M");
this.mLabel.setBounds(5, 12, 20, 20);
this.mLabel.setVisible(false);
container.add(this.mLabel);

// result text field
txt = new JTextField();
txt.setBorder(null);
txt.setText("0");
txt.setHorizontalAlignment(JTextField.RIGHT);
txt.setBounds(25, 0, 215, 40);
txt.setFocusable(false);
txt.setEditable(false);
container.add(txt);

// functions for memory
int _scaleNum = 60;

createButton("MC", 0, 40, _scaleNum, 40);
createButton("MR", _scaleNum + 6, 40, _scaleNum, 40);
createButton("M+", _scaleNum * 2 + 12, 40, _scaleNum, 40);
createButton("M-", _scaleNum * 3 + 18, 40, _scaleNum, 40);

// number
ArrayList<Character> types = new ArrayList<Character>();
types.add('7'); types.add('8'); types.add('9');
types.add('4'); types.add('5'); types.add('6');
types.add('1'); types.add('2'); types.add('3');
types.add('0'); types.add('.'); types.add('C');

for(int i = 0; i < 4; i++)
{
for(int j = 0; j < 3; j++)
{
String _name = String.valueOf(types.remove(0));

createButton(_name, 9 + j * _scaleNum, 130 + (i * _scaleNum), _scaleNum, _scaleNum);
}
}

// operator
divBtn = createButton("/", 0, 80, _scaleNum, 43);
multBtn = createButton("*", _scaleNum + 6, 80, _scaleNum, 43);
minusBtn = createButton("-", _scaleNum * 2 + 12, 80, _scaleNum, 43);
plusBtn = createButton("+", _scaleNum * 3 + 18, 80, _scaleNum, 43);
enterBtn = createButton("=", _scaleNum * 3 + 18, 246, _scaleNum, 124);
createButton("¡ç", _scaleNum * 3 + 18, 123 + 6, _scaleNum, 55);
createButton("¡î", _scaleNum * 3 + 18, 178 + 10, _scaleNum, 55);

frame.pack();
frame.setSize(274,408);
frame.setVisible(true);
}

/** ¹öÆ° »ý¼º */
private JButton createButton(String name, int x, int y, int width, int height)
{
JButton btn = new JButton(name);
btn.setName(name);
btn.setBounds(x, y, width, height);
btn.setFocusable(false);
btn.setFont(this.buttonFont);
btn.addActionListener(this.btnClickListener);
this.container.add(btn);

return btn;
}

/** À̺¥Æ® ¸®½º³Ê ¼³Á¤ */
private void setEventListener()
{
this.frame.addKeyListener(new KeyListener()
{
@Override
public void keyTyped(KeyEvent e)
{
Integer code = Integer.valueOf(e.getKeyChar());

if(code >= 48 && code <= 57) pressNumberPad(String.valueOf(e.getKeyChar()));
else if(code == 43) inputOperate(plusBtn);
else if(code == 45) inputOperate(minusBtn);
else if(code == 42) inputOperate(multBtn);
else if(code == 47) inputOperate(divBtn);
else if(code == 10) inputEnter();// Enter(=Return)
else if(code == 27) inputEscape();// Esc
else if(code == 8) inputBackspace();// Backspace
}

@Override
public void keyReleased(KeyEvent e) {}

@Override
public void keyPressed(KeyEvent e) {}
});
}

/** Å°Æеå ÀÔ·Â */
private void pressNumberPad(String numStr)
{
String txtValue = txt.getText();

if(isNewValue == true)
{
if(selectedOperBtn != null) selectedOperBtn.setForeground(Color.red);
txt.setText("");
isNewValue = false;
}

txtValue = txt.getText();
if(txtValue.equals("0"))
{
txt.setText("");
txtValue = "";
}
txt.setText(txtValue + numStr);

// Àû¿ë ÈÄ »õ·Î¿î value
if(txt.getText().equals(".")) txt.setText("0.");
}

/** ¿¬»êÀÚ ÀÔ·Â */
private void inputOperate(JButton b)
{
String txtValue = txt.getText();

if(txtValue.equals(divideErrorText)) return;

if(isNewValue == false) calculate();

if(selectedOperBtn != null) selectedOperBtn.setForeground(Color.black);
b.setForeground(Color.red);
selectedOperBtn = b;
}

/** Square Root °è»ê */
private void calculateSquareRoot()
{
Float fValue = Float.valueOf(txt.getText());

BigDecimal tmp = new BigDecimal(Math.sqrt(fValue));

Float f = tmp.floatValue();
Integer i = tmp.intValue();
if(f.equals(Float.valueOf(i))) txt.setText(String.valueOf(i));
else txt.setText(String.valueOf(f));

this.isNewValue = true;
}

/** ¿£ÅÍ ÀÔ·Â (°á°ú °è»ê) */
private void inputEnter()
{
String txtValue = txt.getText();

if(txtValue.equals(divideErrorText)) return;

calculate();
if(selectedOperBtn != null) selectedOperBtn.setForeground(Color.black);
}

/** Esc ÀÔ·Â (ÃʱâÈ­) */
private void inputEscape()
{
txt.setText("0");
resultValue = new BigDecimal(0);

if(selectedOperBtn != null) selectedOperBtn.setForeground(Color.black);
selectedOperBtn = null;
}

/** ¹é½ºÆäÀ̽º ÀÔ·Â (¸¶Áö¸· ÀԷ°ª »èÁ¦) */
private void inputBackspace()
{
String txtValue = txt.getText();
txt.setText(txtValue.substring(0, txtValue.length() - 1));
if(txt.getText().equals("")) txt.setText("0");
}

/** °è»êÇϱâ */
private void calculate()
{
Float fValue = Float.valueOf(txt.getText());

if(selectedOperBtn == null)
{
resultValue = new BigDecimal(fValue);
isNewValue = true;
return;
}

switch(selectedOperBtn.getName())
{
case "/":
if(txt.getText().equals("0") || txt.getText().equals("0."))
{
this.txt.setText(this.divideErrorText );
if(this.selectedOperBtn != null) this.selectedOperBtn.setForeground(Color.black);
this.selectedOperBtn = null;
this.isNewValue = true;
this.resultValue = new BigDecimal(0);
return;
}
resultValue = resultValue.divide(new BigDecimal(fValue));
break;

case "*":
resultValue = resultValue.multiply(new BigDecimal(fValue));
break;

case "+":
resultValue = resultValue.add(new BigDecimal(fValue));
break;

case "-":
resultValue = resultValue.subtract(new BigDecimal(fValue));
break;
}

Float f = resultValue.floatValue();
Integer i = resultValue.intValue();
if(f.equals(Float.valueOf(i))) txt.setText(String.valueOf(i));
else txt.setText(String.valueOf(f));

isNewValue = true;
}

/** Äֿܼ¡ Ãâ·ÂÇϱâ */
private void trace(String value)
{
System.out.println(value);
}

/** main ÇÔ¼ö */
public static void main(String[] args)
{
new JCalculator().create();
}
}



ÆÛ ¿Ô½À´Ï´Ù

Ãâó : https://blog.wonhada.com/?p=840
2017/12/25  
3206   SNSÇØÅ·ÀÌ µÇ³ª¿ë? µµ¿ÍÁÖ¼¼¿ä ¤Ð¤Ð¤Ð [2]     ÇÑä¹Î
02/28 338
3205   Ä¡Æ®¿£Áø °í¼öºÐ °è½Ç±î¿ä[1]     rjsdudals123
02/15 192
3204   ¿À·ù Á» ã¾ÆÁÖ¼¼¿ä [1]     marunim
05/30 922
3203 ºñ¹Ð±ÛÀÔ´Ï´Ù  124     minsub87
08/17 1
3202   c¾ð¾î segmentation fault:11 ¿À·ù Áú¹®µå¸³´Ï´Ù![2]     leebk1124
05/21 2008
3201   C++ÇÔ¼ö°ü·Ã Áú¹®ÀÌ¿¡¿ë!![3]     1999dylee
05/11 1845
3200   ÆÄÀ̽ã Áö¹® µå¸³´Ï´Ù.[1]     kksh1107
04/24 1585
3199   ¸®¹ö½ÌÀÇ ¼¼¹ø¤Š ²É - ¿ª¶û-     nninni79
04/20 2288
3198   ´Þ°í³ª ¹®¼­ ½©ÄÚµå[1]     ghjk645
03/24 1607
3197 ºñ¹Ð±ÛÀÔ´Ï´Ù  c¾ð¾î ¼Ò¼ö °ª     adwefq
04/29 0
3196   C¾ð¾î ¼Ò½ºÁú¹®ÀÔ´Ï´Ù![5]     an0088
01/05 5122
3195   C++ /// ºôµå ¿¡·¯ ¤Ð¤Ð[1]     guichanta
08/23 2397
3194 ºñ¹Ð±ÛÀÔ´Ï´Ù  c¾ð¾î µµ¿ÍÁÖ¼¼¿ä¤Ð¤Ð     su6339
04/06 0
3193   ÇØÅ·À» ¹è¿ì·Á°íÇϴµ¥[3]     zoodem04
03/26 4180
3192   c¾ð¾î¸¦ ¹è¿ì°í½Í¾î¿ä ![7]     dwc07238
02/11 4063
3191   ½ºÅÃÀÌ ½×ÀÌ´Â ¹æÇâ¿¡ °üÇؼ­!![1]     hackxx123
12/10 3514
3190   ÇØÅ·Åø¿¡¼­ ip ¾øÀÌ Çϵ忡 ½É´Â°Å¿¡´Â ¾î¶²°Ô ÀÖÀ»±î¿ä?[2]     aowlrgmlals
11/27 4278
3189   C¾ð¾î Çϴµ¥ double ½Ç¼ö¸¦ ³ÖÀºµ¥ ÀÚ²Ù 0.0ÀÌ ³ª¿Í¿ä[2]     fatou10336
11/20 3730
3188   dumpcode.h ÀÌÇØÁ» µµ¿ÍÁÖ¼¼¿ä .[1]     cm6418
11/06 3705
3187   c¾ð¾î ¾Ë°í¸®Áò Áú¹®ÀÔ´Ï´Ù.[3]     alstn8150
10/12 3734
1 [2][3][4][5][6][7][8][9][10]..[161]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org