아 이미지 왜 자꾸 깨짐.

이미지 자꾸 깨지니까 그냥 말로하겠음 ...딱히 할말이없네요 이미지올리고싶은데
ps&cube
접속 : 6146   Lv. 86

Category

Profile

Counter

  • 오늘 : 133 명
  • 전체 : 440030 명
  • Mypi Ver. 0.3.1 β
[학생] 자바 계산기 GUI만드는데...오류도와주시면 감사하겠습니다. (5) 2015/10/17 PM 09:13

계산은 다 됩니다...키보드도, 마우스로도...
근데...
1+2+3= 해서 결과도출한 후에...
다시그 화면에 나온 결과값에 +1 이런걸해서 =을 찍어주면 에러가납니다...
아..머리가 너무 아파서 못하겠는데...혹시 능력자분중에 오류부분을 집어주실분 계신지요...
temp1으로 저장하는부분에서 오류가 난거같은데..
아예 코드를 바꿔야하는건지, 이상태에서 수정이 가능한지...부탁드리겠습니다.

파일첨부는 아래 링크에 올렸습니다.
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=235791791



import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.Font;
import java.awt.Dimension;
import javax.swing.border.BevelBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import javax.swing.UIManager;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.awt.event.ActionEvent;

public class Calculator2 extends JFrame implements ActionListener {

private JPanel c;
private String num="";
private String num1="";
private double temp, temp1, result;
private String calc;
private ArrayList opList=new ArrayList<>();
private String operator;
private DecimalFormat d=new DecimalFormat("####.##");
JLabel lbl_output;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Calculator2 frame = new Calculator2();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public Calculator2() {
setResizable(false);
setTitle("\uC790\uBC14\uACC4\uC0B0\uAE30");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 269, 290);
c = new JPanel();
c.setBorder(new EmptyBorder(5, 5, 5, 5));
c.setLayout(new BorderLayout(0, 0));
setContentPane(c);


lbl_output = new JLabel("");
lbl_output.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
lbl_output.setPreferredSize(new Dimension(0, 20));
lbl_output.setFont(new Font("굴림", Font.PLAIN, 14));
lbl_output.setBackground(Color.WHITE);
lbl_output.setHorizontalAlignment(SwingConstants.RIGHT);
c.add(lbl_output, BorderLayout.NORTH);

addWindowListener(new MyWindListener());
c.addKeyListener(new MyKeyListener());


JPanel p_center = new JPanel();
c.add(p_center, BorderLayout.CENTER);
p_center.setLayout(new BorderLayout(0, 0));

JPanel p_center_north = new JPanel();
p_center.add(p_center_north, BorderLayout.NORTH);

JButton btn_backspace = new JButton("Backspace");
btn_backspace.addActionListener(this);
btn_backspace.setBorder(new TitledBorder(null, "", TitledBorder.LEFT, TitledBorder.TOP, null, null));
p_center_north.add(btn_backspace);

JButton btn_equal = new JButton("=");
btn_equal.addActionListener(this);
btn_equal.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
btn_equal.setPreferredSize(new Dimension(95, 23));
p_center_north.add(btn_equal);

JPanel p_center_center = new JPanel();
p_center.add(p_center_center, BorderLayout.CENTER);
p_center_center.setLayout(new GridLayout(4, 4, 5, 5));

JButton btn_7 = new JButton("7");
btn_7.addActionListener(this);
btn_7.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.ABOVE_TOP, null, null));
p_center_center.add(btn_7);

JButton btn_8 = new JButton("8");
btn_8.addActionListener(this);
btn_8.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.ABOVE_TOP, null, null));
p_center_center.add(btn_8);

JButton btn_9 = new JButton("9");
btn_9.addActionListener(this);
btn_9.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.ABOVE_TOP, null, null));
p_center_center.add(btn_9);

JButton btn_div = new JButton("/");
btn_div.addActionListener(this);
btn_div.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.ABOVE_TOP, null, null));
p_center_center.add(btn_div);

JButton btn_4 = new JButton("4");
btn_4.addActionListener(this);
btn_4.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
p_center_center.add(btn_4);

JButton btn_5 = new JButton("5");
btn_5.addActionListener(this);
btn_5.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
p_center_center.add(btn_5);

JButton btn_6 = new JButton("6");
btn_6.addActionListener(this);
btn_6.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
p_center_center.add(btn_6);

JButton btn_multiple = new JButton("*");
btn_multiple.addActionListener(this);
btn_multiple.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
p_center_center.add(btn_multiple);

JButton btn_1 = new JButton("1");
btn_1.addActionListener(this);
btn_1.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
p_center_center.add(btn_1);

JButton btn_2 = new JButton("2");
btn_2.addActionListener(this);
btn_2.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
p_center_center.add(btn_2);

JButton btn_3 = new JButton("3");
btn_3.addActionListener(this);
btn_3.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
p_center_center.add(btn_3);

JButton btn_sub = new JButton("-");
btn_sub.addActionListener(this);
btn_sub.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
p_center_center.add(btn_sub);

JButton btn_0 = new JButton("0");
btn_0.addActionListener(this);
btn_0.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
p_center_center.add(btn_0);

JButton btn_clear = new JButton("C");
btn_clear.addActionListener(this);
btn_clear.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
p_center_center.add(btn_clear);

JButton btn_jum = new JButton(".");
btn_jum.addActionListener(this);
btn_jum.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
p_center_center.add(btn_jum);

JButton btn_sum = new JButton("+");
btn_sum.addActionListener(this);
btn_sum.setBorder(new TitledBorder(null, "", TitledBorder.TRAILING, TitledBorder.TOP, null, null));
p_center_center.add(btn_sum);


}

public void actionPerformed(ActionEvent e) {

//버튼이 눌러지면 그 버튼의 텍스트값을 읽얼올수잇ㅇ므.
String actionCommand=e.getActionCommand();
function(actionCommand);
}

class MyKeyListener extends KeyAdapter{
public void keyPressed(KeyEvent k) {
String x="";
if(k.getKeyCode()==KeyEvent.VK_BACK_SPACE){
if(temp==0.0){
int lastIndex = num.length()-1;
num=num.substring(0, lastIndex);
lbl_output.setText(num);
}else if(temp1==0){
int lastIndex=num.length()-1;
num=num.substring(0, lastIndex);
lbl_output.setText(num);
}

}else {
x=String.valueOf(k.getKeyChar());
function(x);
}






}
}


class MyWindListener extends WindowAdapter{
public void windowOpened(WindowEvent we){
c.requestFocus();
}
}

public void function(String x){

switch(x){
case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "0" : case ".":

if(x.charAt(0)==48){
lbl_output.setText("");
}else{
num+=x;}
lbl_output.setText(num);


break;
case "+": case "-": case "*": case "/":

lbl_output.setText("" );
opList.add(num);
opList.add(x);
calc=x;
lbl_output.setText(calc);

num="";

break;



case "=":
opList.add(num);
num="";

temp=Double.parseDouble(opList.get(0));

for(int i=1; i if((i+1)%2==0)
calc=opList.get(i);
else{
temp1=Double.parseDouble(opList.get(i));
if(calc.equals("+"))
result=temp+temp1;
if(calc.equals("-"))
result=temp-temp1;
if(calc.equals("*"))
result=temp*temp1;
if(calc.equals("/"))
result=temp/temp1;
if(calc.equals("="))
lbl_output.setText("=가 입력되었습니다.");
temp=result;
lbl_output.setText(""+d.format(result));

}







break;


case "C":
lbl_output.setText("");
temp=0;
num="";
temp1=0;
opList.removeAll(opList);

break;
}
}


}

신고

 

키로즈    친구신청

+라는 키를 Number형태로 변환하니 오류날수밖에요 266줄쪽 수정하세요

ps&cube    친구신청

으으....음...=다음에 +는 i가홀수일때니까 calc로 가게되는거아닌가요?

워터십다운    친구신청

코드는 안봐서 정확히는 모르겠다만 exception 확인해보면
숫자를 입력받을 순서에 연산기호(문자열)를 입력받아서 에러가 나고 있습니다.

출력된 라인 훑어보시면 대충 문제가 보이실 듯..

傲慢[오만]의 墮天使    친구신청

경력5년차 선배로서 간단하게 조언하나 해드릴게요.
exception 먼저 보는 눈을 길러야 할거 같습니다.
C언어는 잘 모르지만 자바는 오류만 보아도 이게 왜 오류가 나는지 알려줍니다.

이미지 보면 왜 오류가 나는지 명백하게 나와 있습니다.
오류 사항 보고 곰곰히 생각해보시는 걸 추천드립니다.

귀찮닭    친구신청

추가 조언을 드리자면 exception 발생되는 부분을 긁어서 구글링 하시면 오류 해결에 많은 도움 된답니다.
X