我正在尝试将 excel 嵌套的 IF 语句转换为代码语言,但我不确定我是否正确,希望我能得到一些帮助
这是 excel 语句:
=IF(D3="Feather",IF(OR(I3>1000,R3="n/a"),"",IF(W3="F","F",IF(AND(I3<=1000,R3>8),"F","P"))),"")
我的代码 :
if( D3 == "Feature"){
if (I3>1000 || R3 =="n/a") {
} else if (W3=="F"){
"F"
} else if( I3<=1000 && R3>8){
"F"
} else {
"P"
}
}
谢谢
您确实正确解释了 Excel 公式,但有三件事会阻止您的代码成为"正确的 Java"。
- 像
"P"
、"F"
等表达式在{
和}
之间单独坐着没有任何影响。 关于Excel公式的事情是它实际上具有值;这是一系列 Javaif
和else
语句实际上没有的东西。 如果需要值,可以将所有这些编写为返回值的 Java 方法,也可以使用三元运算符? :
创建具有所需值的单个表达式。 - 要在 Java 中比较字符串,您几乎总是希望使用
equals
方法,而不是==
运算符。 原因是两个不同的String
对象可能具有相同的值;但在这种情况下,==
会为他们返回false
,但equals
会返回 true。 - 目前尚不清楚
R3
是什么类型。 在某一点上,您将其视为其类型String
,而在另一点,您将其视为数值变量。 与 Excel 公式不同,Java 中的任何表达式都具有明确定义的数据类型。
将公式转换为Java表达式,并注意这三个问题,我们得到类似的东西。
d3.equals("Feather") ?
((i3 > 1000 || r3.equals("n/a")) ? "" :
w3.equals("F") ? "F" :
(i3 <= 1000 && Integer.parseInt(r3) > 8) ? "F" : "P" ) : ""
但这有点难读,因为三元运算符太多了。 大多数人更喜欢把它写成一种方法,像这样。
public String excelFormula(String d3, int i3, String r3, String w3) {
if (d3.equals("Feather")) {
if (i3 > 1000 || r3.equals("n/a")) {
return "";
} else if (w3.equals("F")) {
return "F";
} else if (i3 <= 1000 && Integer.parseInt(r3) > 8) {
return "F";
} else {
return "P";
}
} else {
return "";
}
}