如何在这三个条件下至少在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)
);
// [...]
}
答案 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表达式和 功能接口。谓词的功能方法是 测试(对象)。