当前位置: 首页 > 知识库问答 >
问题:

温度计类逻辑错误

吕鸿朗
2023-03-14

我试图创建一个类,它有一个接受温度(以摄氏度为单位)为双值的构造函数,如果温度小于-273.15,则将其设置为-273.15。它还可以计算不同测量单位的其他温度,但这并不重要。由于某种原因,我得到一个逻辑错误,它不能纠正小于-273.15到-273.15的输入。

public class TemperatureC
{


private double temperature;


public TemperatureC(double c)
{
    if (temperature < -273.15)
    {
        temperature = -273.15;
    }
    else
    {
        temperature = c;
    }
}

public TemperatureC()
{
    temperature = -273.15;
}

public double getC()
{
    return temperature;
}

public double getF()
{
    return ((temperature * 1.8) + 32);
}

public double getK()
{
    return (temperature + 273.15);
}

public void setC(double c)
{
    if (temperature >= -273.15)
    {
        temperature = c;
    }

}

}
import java.util.Scanner;

public class TemperatureTester
{
public static void main(String[] args)
{
Scanner thermometer = new Scanner(System.in);
TemperatureC temp = new TemperatureC();

System.out.printf("Please enter the initial temperature:");
double intialTemp = thermometer.nextDouble();
temp.setC(intialTemp);

System.out.println("The current temperature in Celsius is:" + temp.getC());
System.out.println("The current temperature in Fahrenheit is:" + temp.getF());
System.out.println("The current temperature in Kelvin is:" + temp.getK());

System.out.printf("Please enter a new temperature:");
double secondTemp = thermometer.nextDouble();
temp.setC(secondTemp);

System.out.println("The current temperature in Celsius is:"+ temp.getC());
System.out.println("The current temperature in Fahrenheit is:"+ temp.getF());
System.out.println("The current temperature in Kelvin is:"+ temp.getK());

}
}
Please enter the initial temperature:-900
The current temperature in Celsius is:-900.0
The current temperature in Fahrenheit is:-1588.0
The current temperature in Kelvin is:-626.85
Please enter a new temperature:-900
The current temperature in Celsius is:-900.0
The current temperature in Fahrenheit is:-1588.0
The current temperature in Kelvin is:-626.85

共有1个答案

微生德运
2023-03-14

问题是您正在检查构造函数的默认值。先将温度调到c或对照c进行检查。

public TemperatureC(double c)
{

temperature = c;

if (temperature < -273.15)
{
    temperature = -273.15;
}

这应该会起作用,因为其他的副作用不再需要了

 类似资料:
  • 主要内容:前言,谁适合阅读本教程,Cat Me,矫情箴言前言 本教程主要讲述 Verilog 完成数字 IC 设计(数字集成电路设计,Digital Integrated Circuit Design) 时涉及的一些知识,更加注重数字电路安全、稳定、方便的实现。将该教程理解为 《Verilog 教程》的高级篇,也再适当不过。 内容主要包括:底层(1章 门级建模、2章 用户自定义原语 UDP、9章 逻辑综合)、时序(3章 时序分析)、优化(4章 同步与异

  • 您好,朋友,我对mongodb聚合不友好,我想要的是,我有一个对象数组,其中包含每个问题的主题分数,我使用的是节点js,所以我想要的是,如果可能的话,使用mongo查询进行完整计算,包括主题名称及其总分和尝试次数,不尝试我的Json数组如下 在对象中,一个字段用于正确标记主题不同,我希望输出如下 我正在尝试聚合,但尚未完成我已尝试此查询 任何人都知道如何实现这种类型的输出。而如果用另一种方式来实现

  • 我目前正在开发一个trie实现: 从文本文件中读取单词 逐个字符迭代该单词 将字符的按字母顺序排列的索引号附加到新节点并附加到根节点 我在第三步遇到了麻烦。 你看,我在第三步尝试做的是: null 对于第3步,我已经做了: 它设置root以便它现在是下一个节点 我在这些陈述中犯了什么逻辑错误吗?

  • 我有一个应用程序,允许用户安排警报在特定时间响起,并在他们选择的间隔内重复。我使用JSON保存警报细节,使用SharedPreferences作为存储。 我正在使用AlarmManager来安排我的应用程序何时应该被通知,警报应该响起来通知用户。我目前正在使用AlarmManager的setRepeating()方法,提供用户提供的时间间隔。这工作得很好,理论上应用程序永远不需要更新存储下一个报警

  • Python3 实例 以下实例演示了如何将摄氏温度转华氏温度:# -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com # 用户输入摄氏温度 # 接收用户输入 celsius = float(input('输入摄氏温度: ')) # 计算华氏温度 fahrenheit = (celsius * 1.8) +

  • 我的任务是使用substring提取字符串的前几个字母,如果它与另一个给定字符串匹配。基本上,给定一个字符串和第二个“word”字符串,如果单词出现在字符串的前面,我们会说它与字符串匹配,除非它的第一个字符不需要完全匹配。在匹配时,返回字符串的前面,或者返回空字符串。因此,在字符串“hippo”中,“hi”返回“hi”,而“xip”返回“hip”。单词的长度至少为1。 我的方法的问题是,当str只