【发布时间】:2015-08-29 02:46:47
【问题描述】:
我有这个用 java 写的期末考试计算器应用程序,但我无法正确计算。
这是我的代码
import java.awt.EventQueue;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class MyFirstApp {
private JFrame frame;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
// Set System L&F
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (UnsupportedLookAndFeelException e) {
// handle exception
}
catch (ClassNotFoundException e) {
// handle exception
}
catch (InstantiationException e) {
// handle exception
}
catch (IllegalAccessException e) {
// handle exception
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MyFirstApp window = new MyFirstApp();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public MyFirstApp() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 342, 281);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
textField = new JTextField();
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
char c=e.getKeyChar();
if(!(Character.isDigit(c) || (c==KeyEvent.VK_BACK_SPACE) || c==KeyEvent.VK_DELETE)) {
e.consume();
}
}
});
textField.setBounds(88, 37, 150, 20);
frame.getContentPane().add(textField);
textField.setColumns(10);
textField_1 = new JTextField();
textField_1.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
char c=e.getKeyChar();
if(!(Character.isDigit(c) || (c==KeyEvent.VK_BACK_SPACE)
|| c==KeyEvent.VK_DELETE)) {
e.consume();
}
}
});
textField_1.setColumns(10);
textField_1.setBounds(88, 84, 150, 20);
frame.getContentPane().add(textField_1);
textField_2 = new JTextField();
textField_2.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
char c=e.getKeyChar();
if(!(Character.isDigit(c) || (c==KeyEvent.VK_BACK_SPACE) || c==KeyEvent.VK_DELETE)) {
e.consume();
}
}
});
textField_2.setColumns(10);
textField_2.setBounds(127, 129, 71, 20);
frame.getContentPane().add(textField_2);
JButton btnNewButton = new JButton("Calculate");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String gradestring = textField.getText();
String wantstring = textField_1.getText();
String finalstring = textField_2.getText();
int gradeparse = Integer.parseInt(gradestring);
int wantparse = Integer.parseInt(wantstring);
int finalpercentage = Integer.parseInt(finalstring);
int findworthpercentage = finalpercentage;
int showfinal =
JOptionPane.showMessageDialog(null, "This is what you need " + showfinal/100);
}
});
btnNewButton.setBounds(116, 181, 101, 39);
frame.getContentPane().add(btnNewButton);
JLabel lblGrade = new JLabel("Grade:");
lblGrade.setBounds(45, 40, 43, 14);
frame.getContentPane().add(lblGrade);
JLabel lblWant = new JLabel("Want:");
lblWant.setBounds(45, 87, 33, 14);
frame.getContentPane().add(lblWant);
JLabel lblWorth = new JLabel("Worth:");
lblWorth.setBounds(85, 132, 43, 14);
frame.getContentPane().add(lblWorth);
JLabel label = new JLabel("%");
label.setBounds(202, 132, 11, 14);
frame.getContentPane().add(label);
JLabel label_1 = new JLabel("%");
label_1.setBounds(242, 87, 11, 14);
frame.getContentPane().add(label_1);
JLabel label_2 = new JLabel("%");
label_2.setBounds(242, 40, 11, 14);
frame.getContentPane().add(label_2);
}
}
我需要数学运算的地方是 int showfinal。这是等式:
成绩 = 考试价值 × 考试分数 + (1 – 考试价值) × 当前成绩
我需要帮助将其转化为我的项目。 谢谢,抱歉英语不好。
【问题讨论】:
-
你在哪里尝试实现所述方程。在
btnNewButton.addActionListener? -
嘿,我正在尝试在 public void actionPerformed(ActionEvent e) 方法下实现方程。我想在 messageDialogBox 中打印结果,因此我需要将等式的结果存储在变量 int showfinal 中。
-
请查看help center 和how to ask good questions,了解如何改进此问题并增加获得正确答案的几率。