Java-访问方法中的类的实例 [英] Java- Accesing instances of a class in a method

查看:65
本文介绍了Java-访问方法中的类的实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须为该类编写一个代码,该代码接受一个温度值,将其转换为开尔文,然后确定该温度是否大于,等于,小于或等于其他输入的温度.对于每种布尔可能性,它必须说是对还是错.我无法将设置为t1的温度与布尔方法作为参数的温度t进行比较?有什么建议?另外,别再投票了,我知道我不知道自己在做什么,这就是为什么我问这个问题的原因.我上周开始学习Java,我知道我不擅长吗?

I have to write a code for class that takes in a temperature value, converts it to kelvin, and then determines if this is greater than, equal to, less than, or whatever to another entered temp. It has to say true or false for each of the boolean possibilities. I can't get it to compare the temperature that is set as t1, with the temperature t that the boolean methods take as a parameter? Any suggestions? Also, quit downvoting me, I know I don't know what I'm doing thats why I asked the queston. I started learning Java last week, I know that I'm not good at it?

public class Temperature {

   public double degrees;
    public static void main(String[] args) {

}


    Temperature (){
   degrees=0;
}

Temperature (double enteredtemp){
    degrees = enteredtemp;
}
Temperature (double enteredtemp,char scale ){
   Temperature t1 = new Temperature (enteredtemp, scale);
   t1.set(enteredtemp,scale);


}
public void set (double enteredtemp, char scale){
       if (scale == 'r'|| scale == 'R'){ degrees = (enteredtemp/(9/5));}
       else if (scale == 'c'|| scale == 'C') {degrees = enteredtemp+273.15;}
       else if (scale =='F'|| scale == 'f'){degrees = ((enteredtemp+459.67)*9/5);}



}

public double get(){
    return degrees;
}
 public double get(char scale){
    if (scale == 'c'|| scale == 'C'){degrees = (degrees-273.15);}
    else if (scale == 'r'||scale == 'R'){degrees = (degrees*(9/5));}
    else if (scale == 'f'|| scale == 'F'){degrees = (degrees*(9/5)-459.67);}
    return (degrees);
            }


 public boolean isLessThan(Temperature t){

 if (t.get() < t1.get())
 return true;
 else {
 return false;
 }

 }
 public boolean isGreaterThan(Temperature t){
     if (t.get() > t1.get()) {
     return true;
     }
     else {
     return false;
     }
 }
 public boolean isEqual(Temperature t){
     if ((Math.abs(t.get() - t1.get()))<=10E-12){
     return true;
     }
     else {
     return false;
     }

 }

 public boolean isGreaterThanOrEqual(Temperature t){
     if (t.get() >= t1.get()){
     return true;
     }
     else {
     return false;
     }

 }
 public boolean isLessThanorEqual(Temperature t){
     if (t.get() <= t1.get()){
     return true;
     }
     else {
     return false;
     }
 } 
}

推荐答案

先编译

您发布的代码无法编译,因为您在此处使用了t1之类的未知变量:

Make it compile first

Your code as posted doesn't compile because you are using unknown variables like t1 here:

public boolean isGreaterThan(Temperature t){
     if (t.get()>t1.get()) {return true;}
     else {return false;}
 }

您要将t1.放在此处.

拥有一个名为get的方法来更改类的字段是违反直觉的,也是一种不好的做法.所以代替这个:

It's counter intuitive and a bad practice to have a method named get that changes the fields of a class. So instead of this:

public double get(char scale) {
  if (scale == 'c' || scale == 'C') {
      degrees = (degrees - 273.15);
  } else if (scale == 'r' || scale == 'R') {
      degrees = (degrees * (9 / 5));
  } else if (scale == 'f' || scale == 'F') {
      degrees = (degrees * (9 / 5) - 459.67);
  }
  return (degrees);
}

像这样重写:

public double get(char scale) {
    if (scale == 'c' || scale == 'C') {
        return degrees - 273.15;
    } else if (scale == 'r' || scale == 'R') {
        return degrees * 9 / 5;
    } else if (scale == 'f' || scale == 'F') {
        return degrees * 9 / 5 - 459.67;
    }
    return degrees;
}

我还删除了不必要的括号.

I also removed unnecessary parentheses.

此外,您的大多数方法都可以大大简化,例如:

Also, most of your methods could be greatly simplified, for example:

public boolean isLessThan(Temperature t) {
    return get() < t.get();
}

public boolean isGreaterThan(Temperature t) {
    return get() > t.get();
}

public boolean isEqual(Temperature t) {
    return Math.abs(t.get() - get()) <= 10E-12;
}

public boolean isGreaterThanOrEqual(Temperature t) {
    return get() >= t.get();
}

public boolean isLessThanOrEqual(Temperature t) {
    return get() <= t.get();
}

改进

(我知道您对您的教授不喜欢" switch(他是错的)表示赞赏,但还是请您参考.)

Improve

(I know you commend your prof "doesn't like" switch (and he's wrong), but leaving this anyway for your reference.)

我还建议像这样重写set:

public void set(double enteredtemp, char scale) {
    switch (scale) {
        case 'r':
        case 'R':
            degrees = (enteredtemp / (9 / 5));
            break;
        case 'c':
        case 'C':
            degrees = enteredtemp + 273.15;
            break;
        case 'f':
        case 'F':
            degrees = ((enteredtemp + 459.67) * 9 / 5);
            break;
    }
}

这篇关于Java-访问方法中的类的实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆