Java OOP温度转换器

时间:2014-05-05 14:49:17

标签: java oop

我在Java方面相当新,甚至在尝试理解 OOP 时更新,所以请不要嘲笑我缺乏理解。

我试图设计一个让用户以 Fahrenheit Celsius 输入温度的程序,然后程序将确定该温度是多少在另一个测量中。

如果我朝着正确的方向前进,有人可以给我任何提示吗?

这是我到目前为止所做的,请记住,这几乎是我第一次尝试 OOP ,所以它看起来像是一团糟。

import java.io.*;

class tempConvert
 {

//declaring variables
int c;      //variable for "Celcius"
int f;      //variable for "Fahrenheit"




//method to convert celcius to fahrenheit
public void celToFahr
 {
  InputStreamReader inStream = new InputStreamReader (System.in);
  BufferedReader temp = new BufferedReader (inStream);
  String cel;
  System.out.println ("Please input temperature in celcius:");
  cel = temp.readLine ( );
  c = Integer.parseInt (cel);

  f = (9.0 / 5.0) * c + 32;

  System.out.println ("The temperature in Fahrenheit is " + f + " degrees.");
 }




//method to convert fahrenheit to celcius
public void fahrToCel
 {
  BufferedReader temp = new BufferedReader (inStream);
  String fahr;
  System.out.println ("Please input temperature in fahrenheit:");
  fahr = temp.readLine ( );
  f = Integer.parseInt (fahr);

  c = (5.0 / 9.0) * (f - 32);

  System.out.println ("The temperature in Celcius is " + c + " degrees.");
 }



  }

4 个答案:

答案 0 :(得分:0)

以下是您可以使用的OOP概念:值类型。值类型是保存值的对象,如原始包装器Integer,Double等,以及其他类,如BigDecimal。

现在,这里有三种关于你的价值类型的想法:1)一个有两个字段来表示价值和规模的类; 2)每个温标的不同类别; 3)一个内部始终使用相同比例表示温度的类,并将其外部转换为其他比例。在选择其中一种设计时,要考虑您必须编写的转换方法的复杂性,以及使用您正在创建的小API的客户端代码的复杂性,特别是如果您想要添加对更多温标的支持。 / p>

答案 1 :(得分:0)

<强>输出 output

  

默认温度:0.0C或32.0F

     

1.将Celcius转变为Fareiheit

     

2.转换到Celcius的Fareiheit

     

3.更新默认温度

     

1

     

在Celcius中输入温度以转换为Farenheit

     

60

     

60.0C = 92.0F

     

默认温度:0.0C或32.0F

     

1.将Celcius转变为Fareiheit

     

2.转换到Celcius的Fareiheit

     

3.更新默认温度

     

2

     

以Farenheit输入温度以转换为Celcius

     

-10

     

-10.0F = -23.333333333333336C

     

默认温度:0.0C或32.0F

     

1.将Celcius转变为Fareiheit

     

2.转换到Celcius的Fareiheit

     

3.更新默认温度

     

3

     

以celcius输入温度

     

25

     

默认温度:25.0C或57.0F

     

1.将Celcius转变为Fareiheit

     

2.转换到Celcius的Fareiheit

     

3.更新默认温度

<强> Temperature.java

public interface Temperature {
    public double getTempInFarenheit(double celcius);
    public double getTempInCelcius(double farenheit);
    public double getCurrentTemp();
    public double setDefaultTemp(double defaultCelcius);
    }

<强> TemperatureImpl.java

public class TemperatureImpl implements Temperature {

    private double defaultTemp=0.0;

    public double Temperature(double defaultTemp){
        return this.defaultTemp=defaultTemp;
    }

    @Override
    public double getTempInFarenheit(double celcius) {
        return ((double)(9/5)*(celcius+32.0));
    }

    @Override
    public double getTempInCelcius(double farenheit) {
        return ((double)5/9*(farenheit-32.0));
    }

    @Override
    public double getCurrentTemp() {
        return defaultTemp;
    }

    @Override
    public double setDefaultTemp(double defaultCelcius){
        return this.defaultTemp = defaultCelcius;
    }
}

<强> Main.java

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        TemperatureImpl temp = new TemperatureImpl();

        while(true){
            System.out.println("Default temperatures: "+temp.getCurrentTemp()+"C OR "+temp.getTempInFarenheit(temp.getCurrentTemp())+"F");
            System.out.println("1.Convert Celcius to Fareiheit");
            System.out.println("2.Convert Fareiheit to Celcius");
            System.out.println("3.Update default temperature");
            Scanner sc = new Scanner(System.in);
            int input = sc.nextInt();
            switch (input) {
            case 1: System.out.println("Enter temperature in Celcius to convert into Farenheit");
                double celcius = sc.nextDouble();
                System.out.println(celcius+"C = "+temp.getTempInFarenheit(celcius)+"F");
                break;
            case 2: System.out.println("Enter temperature in Farenheit to convert into Celcius");
            double fareinheit = sc.nextDouble();
            System.out.println(fareinheit+"F = "+temp.getTempInCelcius(fareinheit)+"C");
            break;
            case 3: System.out.println("Enter temperature in celcius");
            temp.setDefaultTemp(sc.nextDouble());
                break;
            default:
                System.out.println("Invalid input.");;
            }

        }
    }
}

答案 2 :(得分:0)

我在整篇文章中写道,因为正如你在OOP写的评论中所说的那样:

这是主要的OOP部分,一个创建温度对象的类。

package com.example.tomer2;

public class temp {
    double c; // for celcius
    double f; // for farenheit
    boolean isfarenheit;

    public temp( double temp , boolean isfarenheit) {
        if(isfarenheit){
            this.f = temp;
            this.c = this.farenToCelc(temp);
        }
        else{
            this.c = temp;
            this.f = this.celciusToFar(temp);
        }
    }

    private double celciusToFar(double celcius){
        return ((double)(9/5)*(celcius+32.0));
    }

    public double farenToCelc(double farenheit) {
        return ((double)5/9*(farenheit-32.0));
    }


}

这是具有主要功能的类:

package com.example.tomer2;

public class temp {
    double c; // for celcius
    double f; // for farenheit
    boolean isfarenheit;

    public temp( double temp , boolean isfarenheit) {
        if(isfarenheit){
            this.f = temp;
            this.c = this.farenToCelc(temp);
        }
        else{
            this.c = temp;
            this.f = this.celciusToFar(temp);
        }
    }

    private double celciusToFar(double celcius){
        return ((double)(9/5)*(celcius+32.0));
    }

    public double farenToCelc(double farenheit) {
        return ((double)5/9*(farenheit-32.0));
    }


}

我没有为此做过完整的测试。

答案 3 :(得分:0)

使用封装字段

Public class Temp{
  private double cel;
  private double far;

  public double getCel(){
    return ((far-32)*5/9);
  }
  public void setCel(double cel){
    this.cel=cel;
  }
  public void getfar(){
    return ((cel*9/5)+32);
  }
  public void setfar(dofaruble far){
    this.cel=cel;
  } 

}

主要方法:

class A{
public static void main(String []args){
    Temp obj=new obj();
    obj.setcel(12.4);
    obj.setfar(34.5);
    System.out.println("Celcious"+obj.getcel());
    System.out.println("fahrenheit"+obj.getfar());
}

}