Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置while语句以打印输出方法?_Java_Methods - Fatal编程技术网

Java 设置while语句以打印输出方法?

Java 设置while语句以打印输出方法?,java,methods,Java,Methods,这不是最好的标题,但基本上我想让用户输入一个温度,然后显示在该温度下冻结的物质和在该温度下沸腾的物质的列表。我希望它处于一个while循环中,并且我希望用户能够继续,直到他们想要停止。这是我到目前为止所学的,我的第一堂课,然后是一名测试人员 public class FreezingPoint { private int temperature; public double getTemperature() { return temperature;

这不是最好的标题,但基本上我想让用户输入一个温度,然后显示在该温度下冻结的物质和在该温度下沸腾的物质的列表。我希望它处于一个while循环中,并且我希望用户能够继续,直到他们想要停止。这是我到目前为止所学的,我的第一堂课,然后是一名测试人员

public class FreezingPoint {

    private int temperature;

    public double getTemperature() {
        return temperature;
    }

    public void setTemperature() {
        this.temperature = temperature;
    }

    public boolean isEthylFreezing() {
        boolean status;

        if (temperature <= -173.0)
            status = true;
        else
            status = false;

        return status;
    }

    public boolean isEthylBoiling() {
        boolean status;

        if (temperature >= 172.0)
            status = true;
        else
            status = false;

        return status;
    }

    public boolean isOxygenFreezing() {
        boolean status;

        if (temperature <= -362.0)
            status = true;
        else
            status = false;

        return status;
    }

    public boolean isOxygenBoiling() {
        boolean status;

        if (temperature >= -306.0)
            status = true;
        else
            status = false;

        return status;
    }

    public boolean isWaterFreezing() {
        boolean status;

        if (temperature <= 32)
            status = true;
        else
            status = false;

        return status;
    }

    public boolean isWaterBoiling() {
        boolean status;

        if (temperature >= 212)
            status = true;
        else
            status = false;

        return status;
    }
}
我的问题是代码不能正常工作,我不知道从这里该怎么做。我知道如何设置while循环,如何让它一直运行到我想停止,但我不确定如何正确打印出根据用户输入的温度显示的物质列表

非常感谢您的帮助,对java来说是一个新手,并且在这方面已经有一段时间了


谢谢

我想你应该用一种不同的方法来测试某样东西在给定温度下是否沸腾或结冰。在您的示例中,您必须为每种物质添加两种方法,然后找到一种循环使用它们的方法

例如,如果您使用一个列表,然后使用switch()语句只将在给定温度下沸腾或冻结的物质添加到列表中,可能会容易得多。如果您创建了一个这样做的方法,并将温度作为参数提供给它,并让它返回填充的列表,那么您可以轻松地循环列表并打印出每个元素

我给你举了一个简单的例子:

public List<String> getSubstances(int temperature){

    List<String> substances = new ArrayList<String>();

    switch(temperature){

        case 0:
            substances.add("Water");

        case 100:
            substances.add("Water");


    }

    return substances;

}
公共物质清单(内部温度){
列表物质=新的ArrayList();
开关(温度){
案例0:
物质。添加(“水”);
案例100:
物质。添加(“水”);
}
返回物质;
}

这将是一种更简单的解决方案,您可以很容易地循环列表以打印出来。

我认为您应该使用不同的方法来测试某个东西在给定温度下是否沸腾或冻结。在您的示例中,您必须为每种物质添加两种方法,然后找到一种循环使用它们的方法

例如,如果您使用一个列表,然后使用switch()语句只将在给定温度下沸腾或冻结的物质添加到列表中,可能会容易得多。如果您创建了一个这样做的方法,并将温度作为参数提供给它,并让它返回填充的列表,那么您可以轻松地循环列表并打印出每个元素

我给你举了一个简单的例子:

public List<String> getSubstances(int temperature){

    List<String> substances = new ArrayList<String>();

    switch(temperature){

        case 0:
            substances.add("Water");

        case 100:
            substances.add("Water");


    }

    return substances;

}
公共物质清单(内部温度){
列表物质=新的ArrayList();
开关(温度){
案例0:
物质。添加(“水”);
案例100:
物质。添加(“水”);
}
返回物质;
}

这将是一种更简单的解决方案,您可以很容易地在列表中循环打印出来。

我建议使用一个类来表示物质:

public class Substance {

    private String name;
    private double tempFreeze;
    private double tempBoil;

    public Substance(String name, double tempFreeze, double tempBoil) {
        this.name = name;
        this.tempFreeze = tempFreeze;
        this.tempBoil = tempBoil;
    }

    public double getTempBoil() {     return tempBoil;  }
    public double getTempFreeze() {    return tempFreeze;  }
    public String getName() {     return name;  }

    public String getState(double temp) {
        if (temp <= tempFreeze) {
            return "freeze";
        } else if (temp >= tempBoil) {
            return "boil";
        }
        return "liquid";
   }
}

我建议使用类别来表示物质:

public class Substance {

    private String name;
    private double tempFreeze;
    private double tempBoil;

    public Substance(String name, double tempFreeze, double tempBoil) {
        this.name = name;
        this.tempFreeze = tempFreeze;
        this.tempBoil = tempBoil;
    }

    public double getTempBoil() {     return tempBoil;  }
    public double getTempFreeze() {    return tempFreeze;  }
    public String getName() {     return name;  }

    public String getState(double temp) {
        if (temp <= tempFreeze) {
            return "freeze";
        } else if (temp >= tempBoil) {
            return "boil";
        }
        return "liquid";
   }
}

工作不正常?出了什么问题,你的错误是什么?你的方法中有很多无用的东西,像这样简化:
public boolean isethylbooling(){return temperature>=172.0;}
对于每一个,我的眼睛可能很弱,但在你的
main
方法中,你读取了温度,但没有将它分配给你的
FreezingPoint
。此外,正如azro回答所建议的那样,我认为通过重新设计您的类并将
物质
视为具有临界温度属性的对象,您将获得很多好处。如果您的问题得到解决,请通过勾选绿色标记来接受对您帮助最大的答案。否则,请对答案进行评论,以获得补充信息,是否工作不正常?出了什么问题,你的错误是什么?你的方法中有很多无用的东西,像这样简化:
public boolean isethylbooling(){return temperature>=172.0;}
对于每一个,我的眼睛可能很弱,但在你的
main
方法中,你读取了温度,但没有将它分配给你的
FreezingPoint
。此外,正如azro回答所建议的那样,我认为通过重新设计您的类并将
物质
视为具有临界温度属性的对象,您将获得很多好处。如果您的问题得到解决,请通过勾选绿色标记来接受对您帮助最大的答案。否则,请对答案进行注释,以获得补充信息。如果您查看OP的检查,您会发现他使用的不是相等,而是比较。因此,他不是在寻找临界温度,而是给定一个温度,即水、氧气等的状态。因此开关不起作用。例如,如果输入是
150
(摄氏度),那么输出是什么?我明白你的意思。对不起,我没意识到。无论如何,创建一个if语句,如
if(0)如果你查看OP的检查,你会发现他不是在使用相等,而是在使用比较。因此,他不是在寻找临界温度,而是给定一个温度,水、氧气等的状态。因此
开关
不起作用。例如,如果输入为
150
(摄氏度),你的输出是什么?我明白你的意思。对不起,我没有意识到。无论如何,创建一个if语句,比如
if(0如果我想挑剔/恼人,我可以知道为什么你在
getState(double)
方法中选择这个设计,而不是基本的
if…else if…else
?。对类建议投赞成票:)@Al1因为我“喜欢”三元^^^^^但是我改变了,更容易理解如果我想挑剔/恼人,我可以知道为什么你在
getState(double)
方法中选择这种设计而不是基本的
if…else if…else
?。投票给类建议:)@Al1因为我“喜欢”三元^^但我变了,这样更容易理解
please enter a temp
125
ethyl is in state : liquid
Oxygen is in state : boil
water is in state : liquid

Do you want to stop ? Write 'yes' to stop
y