【问题标题】:Translate this equation... Please [closed]翻译这个等式......请[关闭]
【发布时间】: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 centerhow to ask good questions,了解如何改进此问题并增加获得正确答案的几率。

标签: java swing math equation


【解决方案1】:

而不是: int showfinal 是否有更正确的答案是双倍的: double showfinal

然后,假设当前成绩是一个百分比,例如 95 (A),下面是有效的等式:

double showfinal = (wantparse/100.0 - ((1 - findworthpercentage/100.0) * gradeparse/100.0)) / (findworthpercentage/100.0);
showfinal = Math.round(showfinal*100.0)/100.0;

然后,如果要显示百分比,请更改: JOptionPane.showMessageDialog(null, "This is what you need " + showfinal/100);

改为乘以 100: JOptionPane.showMessageDialog(null, "This is what you need " + showfinal*100);

如果你想要一个小数,不要乘以 100。

如果我理解你的意图,这个等式将产生,例如:

gradeparse = 85 //Current Grade percentage
wantparse = 90 //Grade wanted percentage
findworthpercentage = 50 //Final is worth half of overall grade

showfinal = 0.95 //Grade needed in Final. Again, multiply by 100 for the percentage.

【讨论】:

  • 这简直太神奇了!我知道这是非常基本的东西,但是考虑到我一天前开始学习 Java,这是一个简洁的程序。非常感谢伙计!
  • @TheHoop 没问题。祝你好运。
【解决方案2】:

所以,
findworthpercentage = 考试价值?
wantparse = 考试成绩?
gradeparse = 当前年级?

如果是,那么:

showfinal = findworthpercentage * wantparse + ( 1 - findworthpercentage ) * gradeparse;

你的变量用法和命名有点混乱

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 2013-04-07
    相关资源
    最近更新 更多