java - 函数未正确返回数字

标签 java math return-value

我正在编写一个简单的程序,它返回一组中每个数字的百分比。但由于某种原因,除了最后一个之外,我无法使数字正确返回......

我不明白为什么它总是为除最后一个数字之外的每个数字打印 0%。

这是代码:

public class MainWindow extends JFrame implements ActionListener {
private JButton theButton = new JButton("Calculer sur 100");
private JTextField textField = new JTextField("");
private JTextArea text = new JTextArea("");
private JScrollPane scroller = new JScrollPane(text);

public MainWindow() {
    setLayout(new BorderLayout());
    setTitle("Calculateur de pourcentage");
    setSize(400, 500);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);

    layoutManagement();

    setVisible(true);
}

private void layoutManagement() {

    text.setEditable(false);
    theButton.addActionListener(this);

    getContentPane().add(scroller, BorderLayout.CENTER);
    getContentPane().add(textField, BorderLayout.NORTH);
    getContentPane().add(theButton, BorderLayout.SOUTH);
}

private int checkForNumber()
{
    int numl;
    try{
        numl = Integer.parseInt(textField.getText());
    }catch(NumberFormatException e)
    { 
        text.setText("Please try with number...");
        System.out.println("Error in number format. Returning 0");
        return 0;
    }
    System.out.println("numl = " + numl);
    return numl;
}

private double doMath(int i, int num)
{
    System.out.println("printing result = " + (i / num) * 100);
    return (i / num) * 100;
}

private void print100(int num) {
    for (int i = 1; i < num + 1; i++)
    {
        text.setText(text.getText() + "\n" + i + " : " + doMath(i, checkForNumber()));
    }
}

public void actionPerformed(ActionEvent e) {
    if (e.getSource() == theButton) {
        text.setText("");
        print100(checkForNumber());
    }
}

有什么想法吗?

最佳答案

这是整数除法的经典案例。两个整数相除时,结果是一个整数。这意味着 2/3 是 0。乘以 100,它仍然是 0。

不要使用(i/num) * 100,而是使用i * 100/num

这样,您就可以将 200 除以 3,得到您要查找的 66。

或者,您可以使用浮点进行计算:

return ((double) i / num) * 100;

通过转换,i 变为 double,这意味着 i/num 被计算为 double 而不是 int。

关于java - 函数未正确返回数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580684/

相关文章:

javascript - XHR 在 Java 中加载 GET 失败?

Java + PDFBox 无法在 Linux 服务器上运行

math - 基于一系列硬币翻转生成从 0 到 9 的随机数

c++ - 使用 C++ 将曲线重新采样为偶数长度的段

math - 知道一个矩形的两个点,我怎样才能找出另外两个?

c - 在 Windows 上一个函数返回 int 到一个返回 BOOL 的函数是否重要?

java - 将 HTTP header 添加到 JAX-WS 服务响应

java - 组织 JBehave 故事

c++ - 返回模板类型的模板函数

c++ - 警告 : returning reference to temporary - strange case (Clarification for Rvalue)