2013-03-17 59 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 2013-03-17 21:41:30

+2

編輯後:無需抨擊你的老師,因爲學習這門學科的責任是你自己的,而不管你的老師「幹得不好」。 – 2013-03-17 21:42:24

回答

3

這裏有2個編譯錯誤的來源。

JSlider#getValue返回一個int的值,所以不需要使用Integer.parseInt,它需要String。相反,你可以使用:

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

而且getValue未定義爲ActionEventgetSource會給你的JButtonObject參考:

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){ // ***** 

是沒有意義的。拍攝 - 它甚至沒有編譯,因爲ActionEvent沒有getValue()方法。您沒有獲得ActionEvent的「值」,而是通過getActionCommand()獲得了它的actionCommand字符串,然後可以使用字符串的equals(...)equalsIgnoreCase(...)方法將其與其他字符串進行比較。

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)); 
     } 
     } 

} 
}