2014-05-05 95 views
-2

我是相當新的Java,甚至更新在試圖瞭解OOP,所以不要取笑我的缺乏理解,請。爪哇OOP溫度轉換器

我想設計一個程序,將讓用戶輸入華氏攝氏度無論是溫度,然後程序會確定溫度在其它測量什麼。

任何人都可以給我任何提示,如果我什至在正確的方向?

這是我到目前爲止,並記住,這幾乎是我第一次嘗試在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."); 
} 



    } 
+3

我不認爲有從溫度什麼尺度來確定一個好辦法它是在。例如,如果我輸入0,這是什麼? 32呢?您需要一些方法來確定它是哪種類型 –

+2

值得注意的是,在這段代碼中沒有OOP概念 – Cruncher

+1

IMO我會在一個更「常規」的Java編程論壇中尋求指導,而使用'new to java'部分而不是在這個面向問答的網站。 – Gimby

回答

0

這裏是你可以使用一個面向對象的概念:值類型。值類型是一些對象,像原始包裝器Integer,Double等等,以及BigDecimal等其他類。

現在,您的價值類型有三種想法:1)一個類有兩個字段來表示值和規模; 2)每個溫標的不同類別; 3)內部總是使用相同比例表示溫度並將其從外部轉換爲其他比例的一類。在選擇其中一種設計時,請思考必須編寫的轉換方法的複雜性,以及使用您正在創建的小API的客戶端代碼的複雜性,特別是如果您想要添加對更多溫標的支持。

0

OUTPUT output

默認溫度:0.0C OR 32.0F

1.Convert的攝氏度到Fareiheit

2.Convert Fareiheit到攝氏

3.Update默認溫度

在攝氏溫度輸入轉換成華氏

60.0℃= 92.0F

默認溫度:0.0C OR 32.0F

1.Convert的攝氏度到Fareiheit

2.將Fareiheit改爲Celcius

3。更新默認溫度

在華氏溫度輸入轉換爲攝氏度

-10

-10.0F = -23.333333333333336C

默認溫度:0.0C OR 32.0F

1.將Celcius改爲Fareiheit

2.Convert Fareiheit到攝氏

3.Update默認溫度

在攝氏溫度輸入

默認溫度:25.0℃OR 57.0F

1.將Celcius改爲Fareiheit

2.Convert Fareiheit到攝氏

3.Update默認溫度


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.");; 
      } 

     } 
    } 
} 
+0

不要多次發佈相同的答案。你已經在這裏發佈了http://stackoverflow.com/a/36969922/1743880。 – Tunaki

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)); 
    } 


} 

我沒有做這個完整的測試。

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()); 
} 

}