Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回零值的整数的值_Java - Fatal编程技术网

Java 返回零值的整数的值

Java 返回零值的整数的值,java,Java,我试图在JFrame中运行一个简单的温度转换。 但是,无论华氏温度如何,华氏温度到摄氏度(整数)的温度转换返回为零。代码如下,后跟主类: /* * ch 11 GUI programming questions * Q 11.12 */ package Chapter11GUI; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.JLabel; import java.awt.ActiveE

我试图在JFrame中运行一个简单的温度转换。 但是,无论华氏温度如何,华氏温度到摄氏度(整数)的温度转换返回为零。代码如下,后跟主类:

/*
* ch 11 GUI programming questions
* Q 11.12
*/
package Chapter11GUI;

import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JLabel;
import java.awt.ActiveEvent;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class TempConverter extends JFrame {
//declare instance varibles

JLabel label1;
JLabel label2;
JTextField faherinheit;

//construto constrots GUI and habldes events
public TempConverter() {
    super("Temperature Converter");
    setLayout(new BorderLayout());

    label1 = new JLabel("Eneter ferinheit to convert to celuis: ");
    //get usre to enter temp i  fioaherinet and trigger event andler to
    //assign string to a integer value
    //use annomonous class
    faherinheit = new JTextField(10);
    faherinheit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            //get numbers enetered
            int temp = Integer.parseInt(faherinheit.getText());
            int celuis = (int) ((5 / 9) * (temp - 32));
            label2.setText("Farinheit Temp " + temp + " in celuis is: " + celuis);




        }//end actionEvent Listener annmonous classs
    });//and eveny handling for textfiel

    //add all compnments to JFrame using birder Layout
    label2 = new JLabel("Temperature in Celuis is : ");
    add(label1, BorderLayout.NORTH);
    add(faherinheit, BorderLayout.CENTER);
    add(label2, BorderLayout.SOUTH);


    }//end constructor
}//end class TempCOnversion
这里

5/9
总是被截断为0


我会建议更多类似于

int celuis = (int) ((5.0 / 9.0) * ((double)temp - 32.0));
这样,截断不会对您造成不良影响


或者更好的是,根本不使用int来计算温度

5/9
整数除法为零,您应该改为
5.0/9


或者您可以将其设置为
(5*(temp-32))/9
,这样您就根本不需要做双重算术,截断发生在结尾处

使用
((5.0/9.0)*(temp-32))
进行转换。当您使用
(5/9)
时,Java编译器将其视为整数,并给出零作为结果

这是因为您使用的是int类型:

intceluis=(int)((5/9)*(temp-32))

所以,
5/9
总是
0

使用双精度
执行计算:

intceluis=(int)((5.0/9.0)*(temp-32.0))
intceluis=(int)((5/9)*(temp-32))应使用十进制值。一种解决方法是:
intceluis=(int)(5D/9D)*(双温-32D))

默认情况下,如果两个操作数不是double或float类型,则“/”符号表示整数除法。要确保收到所需的小数,请将一个或两个操作数强制转换为float/double类型,或使任一操作数专门为该类型,即5.0

示例:
5/9=0,5.0/9=0.5555,5/9.0=0.5555,5.0/9.0=0.5555,(浮动)5)/9=0.5555,(双)5)/9=0.5555,5/(浮动)9=0.5555,5/(双)9=0.5555?你是说
9.0
?不能除以
0
。但是只有一个数字必须是双精度的才能返回适当的值。@izuriel是的,这就是我的意思
5/9=0
5.0/9=0.5555
5/9.0=0.5555
5.0/9.0=0.5555
希望在你的职业生涯中,你只会犯大约100次这个错误——当你除以整数时,你会得到一个整数结果。
int celuis = (int) ((5.0 / 9.0) * ((double)temp - 32.0));