设置while语句打印出方法?

时间:2017-10-18 20:04:26

标签: java methods

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

list

现在是测试人员班级

dict(product=[dict(
  sku='BL394D', quantity= 4, description='Basketball', price=450.00],
  sku='BL4438H', quantity= 1, description='Super Hoop', price=2392.00],
)

我的问题是代码工作不正常而且我很困惑从哪里开始。我知道如何设置while循环以及如何使其停止直到我想停止但我不确定如何根据用户输入的温度正确打印出将要显示的物质列表

任何帮助都很受欢迎,对java来说还是个新手,并且已经被困在这一段时间了

由于

2 个答案:

答案 0 :(得分:1)

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

如果您使用例如列表然后使用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;

}

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

答案 1 :(得分:1)

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

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 static void main(String[] args) {
    List<Substance> list = new ArrayList<>();
    list.add(new Substance("ethyl", -173, 172));
    list.add(new Substance("Oxygen", -362, -306));
    list.add(new Substance("water", 32, 212));

    Scanner sc = new Scanner(System.in);
    do {
        System.out.println("please enter a temp");
        double temperature = sc.nextDouble();
        sc.nextLine();                   //consume return char

        for (Substance s : list) {
            System.out.println(s.getName() + " is in state : " + s.getState(temperature));
        }

        System.out.println("\nDo you want to stop ? Write 'yes' to stop");
    } while (!sc.nextLine().contains("y"));
}

执行示例:

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