2013-03-17 2 views
0

슬라이더를 사용하여 두 개의 숫자를 추가해야하는 Java 클래스에이 할당이 있습니다. 실제로 붙어 있습니다. 여기 내 코드는 다음과 같습니다.두 개의 슬라이더를 사용하여 생성 된 두 개의 숫자를 추가하는 Java 프로그램

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 

public class slideCalculator { 
JButton add,subtract; 
JSlider num1st,num2nd; 
JLabel answer; 
public slideCalculator(){ 
    JFrame calc = new JFrame("Mediocre Calculator"); 
    num1st = new JSlider (0, 100, 0); 
    num1st.setMajorTickSpacing (10); 
    num1st.setMinorTickSpacing (5); 
    num2nd = new JSlider (0, 100, 0); 
    num2nd.setMajorTickSpacing (10); 
    num2nd.setMinorTickSpacing (5); 
    add = new JButton("+"); 
    subtract = new JButton("-"); 
    answer = new JLabel(""); 
    calc.setDefaultCloseOperation(calc.EXIT_ON_CLOSE); 
    calc.setVisible(true); 
    calc.setBounds(500, 200, 290, 210); 
    calc.setLayout(new GridLayout(0,2,1,1)); 
    calc.add(new JLabel("First Number: ")); 
    calc.add(num1st); 
    calc.add(new JLabel("Second Number: ")); 
    calc.add(num2nd); 
    calc.add(new JLabel("Answer: ")); 
    calc.add(answer); 
    calc.add(add); 
    calc.add(subtract); 
    add.addActionListener(new action()); 
    subtract.addActionListener(new action()); 

} 
public static void main(String[] args) { 
    slideCalculator lc = new slideCalculator(); 
} 
public class action implements ActionListener { 
    public void actionPerformed(ActionEvent ae) { 
     int firstNum = Integer.parseInt(num1st.getValue()); 
     int secondNum = Integer.parseInt(num2nd.getValue()); 
     if(ae.getValue()== add){ 
      answer.setText(String.valueOf(firstNum+secondNum)); 
     } 
     else if (ae.getValue()==subtract){ 
      answer.setText(String.valueOf(firstNum-secondNum)); 
     } 
     } 

} 
} 

실행할 때 작동하지 않을 것입니다. 나는 아마 뭔가를 놓치고 있지만 그것을 알아낼 수 없습니다. 나는 그 중 어떤 것에 대해서도 맞습니까?

+0

* "작동하지 않습니다"* 이유를 알면 도움이됩니다. 오류가 있습니까? 출력물이 예상 한 것과 다릅니다. – m0skit0

+2

편집 : 교사가 "나쁜 일을하고있다"고 불문하고이 주제를 배우기위한 책임이 당신과 당신의 것입니다. –

답변

3

2 개의 컴파일 오류 소스가 있습니다. String 기대 Integer.parseInt를 사용할 필요가 없습니다 있도록

JSlider#getValueint 값을 반환합니다. 대신 다음을 사용할 수 있습니다

Object source = ae.getSource(); 
if (ae.getSource() == add) { 
    answer.setText(String.valueOf(firstNum + secondNum)); 
} else if (source == subtract) { 
    answer.setText(String.valueOf(firstNum - secondNum)); 
} 
5

이 :

public void actionPerformed(ActionEvent ae) { 
    int firstNum = Integer.parseInt(num1st.getValue()); 
    int secondNum = Integer.parseInt(num2nd.getValue()); 
    if(ae.getValue()== add){ // ***** 

가 이해되지 않는다

int firstNum = num1st.getValue(); 
int secondNum = num2nd.getValue(); 

또한 getValueActionEvent를 들어, getSource 당신에게 JButton에 대한 Object 참조를 줄 것이다 정의되지 않습니다. Shoot - ActionEvent에는 getValue() 메서드가 없으므로 컴파일되지 않습니다. ActionEvent의 "value"를 가져 오지 않고 getActionCommand()을 통해 actionCommand String을 가져온 다음 String의 equals(...) 또는 equalsIgnoreCase(...) 메서드를 사용하여 다른 String과 비교할 수 있습니다.

즉,

if ("+".equals(ae.getActionCommand()) { 
    // do addition 
} else if ("-".equals(ae.getActionCommand()) { 
    // do subtraction 
} 

미래의 질문에, 당신은 어떤을 얻는 경우에 발생하는 모든 컴파일러 오류를 게시하시기 바랍니다.

0
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 

public class slideCalculator { 
JButton add,subtract; 
JSlider num1st,num2nd; 
JLabel answer; 
public slideCalculator(){ 
    JFrame calc = new JFrame("Mediocre Calculator"); 
    num1st = new JSlider (0, 100, 0); 
    num1st.setMajorTickSpacing (10); 
    num1st.setMinorTickSpacing (5); 
    num2nd = new JSlider (0, 100, 0); 
    num2nd.setMajorTickSpacing (10); 
    num2nd.setMinorTickSpacing (5); 
    add = new JButton("+"); 
    subtract = new JButton("-"); 
    answer = new JLabel(""); 
    calc.setDefaultCloseOperation(calc.EXIT_ON_CLOSE); 
    calc.setVisible(true); 
    calc.setBounds(500, 200, 290, 210); 
    calc.setLayout(new GridLayout(0,2,1,1)); 
    calc.add(new JLabel("First Number: ")); 
    calc.add(num1st); 
    calc.add(new JLabel("Second Number: ")); 
    calc.add(num2nd); 
    calc.add(new JLabel("Answer: ")); 
    calc.add(answer); 
    calc.add(add); 
    calc.add(subtract); 
    add.addActionListener(new action()); 
    subtract.addActionListener(new action()); 

} 
public static void main(String[] args) { 
    slideCalculator lc = new slideCalculator(); 
} 
public class action implements ActionListener { 
    public void actionPerformed(ActionEvent ae) { 
     int firstNum = num1st.getValue(); 
     int secondNum = num2nd.getValue(); 
     if("+".equals(ae.getActionCommand())) { 
      answer.setText(String.valueOf(firstNum+secondNum)); 
     } 
     else 
     if ("-".equals(ae.getActionCommand())) { 
      answer.setText(String.valueOf(firstNum-secondNum)); 
     } 
     } 

} 
}