检查温度条件

时间:2019-02-16 08:39:23

标签: java

如何在这三个条件下至少在98°C,99°C,1°C和2°C等温度下设置合适的温度?

#version 430

 layout(location = 3) in int object;

 layout(binding=0) uniform sampler2D outmatrix;

 // [...]

 void main()
 {
    mat4 outMat = mat4(
        texelFetch(outmatrix, ivec2(0, object), 0),
        texelFetch(outmatrix, ivec2(1, object), 0),
        texelFetch(outmatrix, ivec2(2, object), 0),
        texelFetch(outmatrix, ivec2(3, object), 0)
    );

    // [...]

}

2 个答案:

答案 0 :(得分:1)

我将为您提供一个模式,而不是简单的if-elseif-else块。

您可能想要一个界面Temperature

interface Temperature {
   /** Returns true if the temperature matches the criteria. */
   boolean within(final int temperature);

   /** Returns an appropriate, descriptive, message. */
   String message();
}

然后您可以实现此接口以满足您的多个条件

class BoilingTemperature implements Temperature {
   public boolean within(final int temperature) {
      return temperature > 99;
   }

   public String message() {
      return "Water boiling";
   }
}

class FreezingTemperature implements Temperature {
   public boolean within(final int temperature) {
      return temperature < 1; // Should be 3 degree! But anyway.
   }

   public String message() {
      return "Water freezing";
   }
}

您可以使用此模式编写自定义温度处理程序

class YourCustomTemperature implements Temperature {
   public boolean within(final int temperature) {
      return temperature > 6 && temperature < 40;
   }

   public String message() {
      return "Your custom message";
   }
}

您需要维护这些具体实现的列表,并将其循环以检查哪些匹配项。

final List<Temperature> temperatures = new ArrayList<>(6);
temperatures.add(new BoilingTemperature());
temperatures.add(new FreezingTemperature());
temperatures.add(new YourCustomTemperature());
...

然后

public static void main(String[] args) {
    System.out.println("Give the temperature : ");
    final Scanner sc = new Scanner(System.in);
    int temp = sc.nextInt();

    for (final Temperature t : temperatures) {
       if (t.within(temp)) {
          System.out.println(t.message());
       } 
    }
}

答案 1 :(得分:0)

根据LppEdd的回答,如果您使用的是Java 8+,则可以使用Java谓词

  引入了

java.util.function.Predicate,它在lambda表达式和   功能接口。谓词的功能方法是   测试(对象)。