我制作了这个程序,用摄氏温度转换华氏温度。我收到了编译错误,因为它绕过了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);
}
}
答案 0 :(得分:0)
好的,这段代码......在很多方面都很奇怪。
你能说出编译错误究竟是什么吗?
但这只是一个开始
double tempType = 'c';
你的构造函数中的毫无意义,'c'不是双精度的。并且您已将tempType定义为top作为char,因此,如果有任何构造函数应该如此
public TheTemp(){
tempType = 'c';
tempValue = 0;
obj = 0;
}