我的目标是创建一个以摄氏度和华氏度表示温度的类“温度”。该类需要以下组成的四个构造函数。我需要帮忙的部分是两个访问器方法,因为我还不太熟悉它。我写了代码,但不确定它是否可行,我很感激一些洞察力
四个构造函数:1.一个用于度数2.一个用于刻度3.一个用于度数和刻度4.默认构造函数
两种访问器方法:
w/下面给出的公式C=5(F-32)/9 F=9*C/5 32
从我目前的设置方式来看,我相信我正在朝着只从摄氏度转换到华氏度的方向努力。。。我怎样才能使它可以互换
请不要恨我,我只是个新手,可能会犯致命的错误
package temperatureapparatus;
public class Temperature {
private float degrees;
char scale;
public static final float fahrenheitForm = ((9.0*(degrees/5.0))+32.0);
public Temperature(){
degrees = 0;
scale = 'C';
}
public Temperature(float degrees){
this.degrees = degrees;
degrees = 0;
}
public Temperature(char scale){
this.scale = scale;
scale = 'C';
}
public Temperature(float degrees, char scale){
this.degrees = degrees;
this.scale = scale;
}
public float getTempCels (float degrees, char scale){
return degrees;
}
public float getTempFehr (float degrees, char scale){
return fahrenheitForm;
}
}
这可能不是你想要的答案,但我认为构造器不应该这样设置。另外,我认为你应该对一个接口进行编程。
而且,java在数字方面有点不稳定。我第一次尝试编译你的代码时,我得到:
incompatible types: possible lossy conversion from double to float
对于任何使用硬编码转换浮动的东西,直到我输入所有内容。
如果我以不同的方式来做这件事,我会编写某种具有明确定义的访问器方法的接口。对于您当前的构造函数,它是非常不清楚如何使用的,并且在我看来是危险的。
我会设置一个这样的界面:
package temp;
public interface TemperatureInterface
{
// Sets internal degrees to celcius
public void setCelcius(float degreesCelcius);
// Sets internal degrees to fahrenheit
public void setFahrenheit(float degreesFehrenheit);
// Gets internal degrees in celcius
public float getDegreesCelcius();
// Gets internal degrees in fahrenheit
public float getDegreesFahrenheit();
}
通过这样的实现:
package temp;
public class Temperature
implements TemperatureInterface
{
private boolean temperatureSet;
private float celciusInternal;
private float _convertToCelcius(float degreesFehrenheit)
{
return (((float)9.0*((float)degreesFehrenheit/(float)5.0))+(float)32.0);
}
private float _convertToFehrenheit(float degreesCelcius)
{
return (((float)degreesCelcius*(float)1.8)+(float)32.0);
}
public Temperature() {
this.temperatureSet = false;
}
// Sets internal degrees to celcius
public void setCelcius(float degreesCelcius)
{
this.temperatureSet = true;
// We need to set the internal
// degrees in celcius, so just
// set it.
this.celciusInternal = degreesCelcius;
}
// Sets internal degrees to fahrenheit
public void setFahrenheit(float degreesFehrenheit)
{
this.temperatureSet = true;
// We need to set the internal
// degrees in celcius, so first
// convert it.
float degreesCelcius = this._convertToCelcius(degreesFehrenheit);
this.celciusInternal = degreesCelcius;
}
// Gets internal degrees in celcius
public float getDegreesCelcius()
{
// First make sure the temperature
// has been set.
if (this.temperatureSet == false) {
System.out.println("Error: no temperature set.");
System.exit(1);
}
// We already have degrees celcius,
// so just give the value back.
return this.celciusInternal;
}
// Gets internal degrees in fahrenheit
public float getDegreesFahrenheit()
{
// First make sure the temperature
// has been set.
if (this.temperatureSet == false) {
System.out.println("Error: no temperature set.");
System.exit(1);
}
// First we have to convert the
// internal degrees celcius.
float celcius = this._convertToFehrenheit(this.celciusInternal);
return celcius;
}
}
请注意,我首先编写了接口,您只需要知道该接口就可以知道如何使用该类。通常我会抛出异常,而不是系统。欧点。println(“错误的东西”)
,但它现在几乎无关紧要。
不管怎样,这可能对你的家庭作业问题没有帮助,但我认为这样的课程应该这样写。
您需要将farenheitForm
移动到accessor方法中。如果它是一个私有字段,则只有在构建类并保持在32
时才会初始化它。
public float getTempFehr (float degrees, char scale){
return (9 * degrees / 5f) + 32;
}
从我目前的设置方式来看,我相信我正在朝着只从摄氏度转换到华氏度的方向努力。。。我怎样才能使它可以互换
如果你想用degrees或farenheit来稳定这个类,你应该修改你的第二个构造函数,使其带有一个标志,表示传入的度量;或者创建另一个构造函数,使用double
参数而不是float来表示farenheit形式。进入构造函数后,可以将farenheit值转换为degrees值,并将其存储在private字段中。
public Temperature(double farenheit){
degrees = 5 * (farenheit - 32) / 9;
}
在这一点上,添加另一个构造函数来获取华氏值和标度也是值得的——以与等效度构造函数保持一致。
下面是代码的正确版本。但我不明白为什么你有实例变量,因为你从来没有使用过它们。在你的例子中,构造器也是无关的。对于优雅的代码,您可以遵循Alexander Kleinhans的编码实现,也可以将转换方法(即getTempCels和getTempFehr)标记为静态,并且不必创建实例来使用这些方法。您可以查看此链接以了解静态方法和非静态方法。
public class Temperature {
private float degrees;
char scale;
public Temperature(){
degrees = 0;
scale = 'C';
}
public Temperature(float degrees){
this.degrees = degrees;
scale = 'C';
}
public Temperature(char scale){
// change the given scale to uppercase
scale = Character.toUpperCase(scale);
this.scale = 'C';
// if the given scale is 'F' then change the instance variable scale (this.scale) to scale passed in parameter
if(scale == 'F'){
this.scale = scale;
}
this.degrees = 0;
}
public Temperature(float degrees, char scale){
scale = Character.toUpperCase(scale);
this.scale = 'C';
if(scale == 'F'){
this.scale = scale;
}
//set instance variable degrees (this.degrees) to the degrees passed in parameter
this.degrees = degrees;
}
public float getTempCels (float degrees, char scale){
scale = Character.toUpperCase(scale);
// if the given scale is celsius then just return whatever was passed in parameter
if(scale == 'C'){
return degrees;
}
// else if the given scale is fahrenheit then use the formula to convert to celsius and return the result
else if(scale == 'F'){
return ((degrees - 32.0f) * (5.0f/9.0f));
}
// if the given scale is anything else than celsius or fahrenheit then print a message and return zero.
else{
System.out.println("Invalid scale. Try again with scale either C (for celsius) or F (for fahrenheit)");
return 0;
}
}
public float getTempFehr (float degrees, char scale){
scale = Character.toUpperCase(scale);
//if the given scale is fahrenheit then just return whatever was passed in parameter
if(scale == 'F'){
return degrees;
}
// else if the given scale is celsius then use the formula to convert to fahrenheit and return the result
else if (scale == 'C'){
return ((9.0f*(degrees/5.0f))+32.0f);
}
// if the given scale is anything else than celsius or fahrenheit then print a message and return zero.
else{
System.out.println("Invalid scale. Try again with scale either C (for celsius) or F (for fahrenheit)");
return 0;
}
}
}
我正在做一个项目,需要我使用TinkerKit热敏电阻传感器来获得室温。检测后,Arduino BT板必须通过蓝牙将串行数据发送回Android手机。温度需要在Celcius的手机屏幕上显示。 我已经使串行通信链接工作。但热敏电阻的读数似乎很奇怪。它的读数是173/174/175,但我不确定它的读数是华氏度还是摄氏度(因为我找不到任何数据表和热敏电阻读数装置的详细信息)。 我必须包括任何带数值的温
我对Java还是个新手,在理解OOP方面更是新手,所以请不要取笑我的不理解。 我试图设计一个程序,让用户输入华氏或摄氏度的温度,然后程序将确定另一个测量中的温度。 有没有人能给我一些建议,告诉我我的方向是否正确? 这是我到目前为止所做的,请记住,这是我对OOP的第一次尝试,所以它可能看起来一团糟。
我正在做关于java编程的小练习。 基本上,该应用程序允许用户输入华氏温度并显示摄氏当量,或输入摄氏温度并显示华氏当量。该应用程序包括一个摄氏度方法,返回相当于华氏温度的摄氏度。该应用程序还包括一个华氏度方法,该方法返回相当于摄氏度的华氏度。 以下是我的完整代码: 好消息是包括方法在内的代码正在工作。用户可以输入选择1或2,然后输入温度数字并以摄氏度或华氏度显示。但如果用户输入选择3,程序将显示“
本文向大家介绍python实现简单温度转换的方法,包括了python实现简单温度转换的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现简单温度转换的方法。分享给大家供大家参考。具体分析如下: 这是一段简单的python代码,用户转换不同单位的温度,适合初学者参考 希望本文所述对大家的Python程序设计有所帮助。
检测物体的温度。 用法 Your browser does not support the video tag. 案例:温度计 说明:通过将温度传感器检测到的温度值转化为舵机转动的角度值,来展示度数。 所需模块:智能电源、温度传感器、双舵机驱动、舵机。
温度传感器模块用于检测水、人体等物体的温度。 净重量:13.7g 体积:24×24×14mm 参数 工作电压:5V 测量范围:-55℃~125℃ 测量精度:±0.5℃(-10℃~85℃) 工作电压:DC 5V 抗跌落能力:1.5m 工作温度(模块):-10℃~55℃ 工作湿度:<95%" 特点 高灵敏度 注意事项 测量温度超过100℃时, 传感器线材可能会损坏。请小心使用以免受损坏设备。