为 Excel 编写 Java 嵌套的 if 语句嵌套的 if 语句



我正在尝试将 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公式的事情是它实际上具有值;这是一系列 Java ifelse 语句实际上没有的东西。 如果需要值,可以将所有这些编写为返回值的 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 "";
    }
}

最新更新