请告诉我我做错了什么,if语句和转换不起作用

时间:2015-11-26 17:58:57

标签: java class if-statement

我制作了这个程序,用摄氏温度转换华氏温度。我收到了编译错误,因为它绕过了if语句而且转换没有做任何事情。

     package temp;

        import java.util.Scanner;
  

这是TheTemp类

        public class TheTemp {
            private double tempValue;
            private char tempType;
            private static int obj;
  

此构造函数设置默认值   0度和摄氏度

        public TheTemp(){
            tempValue = 0;
            obj = 0;
        }
  

接下来的3个构造函数用于导入值...   这一个

        public void setTemp(double tempValue){
            this.tempValue=tempValue;
        }
  

这一个

        public void setTemp(char t){
            if(t == 'C'||t == 'c'){
                obj = 0;
                tempType = t;
            }
            if(t == 'F'||t == 'f'){
                obj = 1;
                tempType = t;
            }
            else{
                throw new IllegalArgumentException("Choose ether C or F");
            }

        }
  

和这一个

        public void setTemp(char t, double tempValue){

            this.tempValue=tempValue;

            if(t == 'C'||t == 'c'){
                obj = 0;
                tempType = t;
            }
            if(t == 'F'||t == 'f'){
                obj = 1;
                tempType = t;
            }
            else{
                throw new IllegalArgumentException("Choose ether C or F");
            }

        }
  

这是转换   第一个if语句是Celsius到Fahrenheit和   第二个if语句是Fahrenheit到Celsius

        public void convertValue(){
            if(obj == 0){
                tempValue = 9*(tempValue/5) + 32;
            }
            if(obj == 1){
                tempValue = 5*(tempValue - 32) / 9;
            }
            else{
                throw new IllegalArgumentException("Choose ether C or F");

            }
        }

        public double getTempValue(){
            return tempValue;
        }
  

这是测试课程的程序

            public static void main(String[] args) {
                TheTemp A = new TheTemp();
                Scanner kb = new Scanner(System.in);
                double a;

                A.setTemp(55);
                A.convertValue();
                a=A.getTempValue();
                System.out.println(a);
            }

        }

1 个答案:

答案 0 :(得分:0)

好的,这段代码......在很多方面都很奇怪。

你能说出编译错误究竟是什么吗?

但这只是一个开始

 double tempType = 'c';
你的构造函数中的

毫无意义,'c'不是双精度的。并且您已将tempType定义为top作为char,因此,如果有任何构造函数应该如此

    public TheTemp(){
        tempType = 'c';
        tempValue = 0;
        obj = 0;
    }