为什么我用Java计算错了?

为什么我用Java计算错了?,java,Java,我使用这段代码来计算一些东西,但几乎在所有情况下,结果都是0.0。为什么?编译器中没有警告或错误 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try { int potsum = Integer.valueOf(jTextField1.getText()); int bla =

我使用这段代码来计算一些东西,但几乎在所有情况下,结果都是0.0。为什么?编译器中没有警告或错误

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        int potsum = Integer.valueOf(jTextField1.getText());
        int bla = Integer.valueOf(jTextField2.getText());
        float result = ((Integer.valueOf(bla)/Integer.valueOf(potsum)) * 100);
        jLabel3.setText(Float.toString(result));
    } catch (NumberFormatException e) {
        System.out.println("Error!");
    }
}
正在执行整数除法,该除法将值(1/2=>0,2/3=>0,3/3=>1)降至最低

考虑进行类型转换或将除法的分子/分母设置为浮点值

float result = Integer.valueOf(bla) * 100.0f / Integer.valueOf(potsum);


我还要补充一点,我经常看到人们将除法作为表达式中的最后一个运算符,这主要是因为这澄清了目的,不需要人们理解运算顺序+计算是如何从左到右的。

您需要转换为浮点,否则它看起来就像Java中的整数算术

float result = bla * 100f/ potsum;

请注意百分比的正确计算。

这是因为这是整数除法上的整数。在除法之前将这两个值都转换为浮动,应该会得到正确的结果

浮点结果=((float.valueOf(bla)/float.valueOf(potsum))*100)

因为您正在进行整数除法。
float result = (float)Integer.valueOf(bla) / Integer.valueOf(potsum) * 100.0f;
float result = Integer.valueOf(bla) / (float)Integer.valueOf(potsum) * 100.0f;
float result = bla * 100f/ potsum;