我在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.");
}
}
答案 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());
}
}