Java 如何将以下三元运算符转换为常规if语句?

Java 如何将以下三元运算符转换为常规if语句?,java,Java,我正在读一些代码,遇到了下面的三元表达式。如何将以下三元运算符转换为常规if语句 ( (vowel) ? ((consonant) ? "ay" : "yay") : "") 大概是这样的: if(vowel) { if(consonant) { return "ay" } else { return "yay" } } else { return "" } 注意,我使用return是因为三元运算符是一个表达式,而if是Jav

我正在读一些代码,遇到了下面的三元表达式。如何将以下三元运算符转换为常规if语句

 ( (vowel) ? ((consonant) ? "ay" : "yay") : "")
大概是这样的:

if(vowel) {
    if(consonant) {
        return "ay"
    } else {
        return "yay"
    }
} else {
    return ""
}
注意,我使用return是因为三元运算符是一个表达式,而if是Java中的一个语句,因此它没有值。您必须将其包装在返回字符串的方法中。

类似以下内容:

if(vowel) {
    if(consonant) {
        return "ay"
    } else {
        return "yay"
    }
} else {
    return ""
}

注意,我使用return是因为三元运算符是一个表达式,而if是Java中的一个语句,因此它没有值。您必须将其包装在返回字符串的方法中。

从内到外工作

if (vowel) {
    if (consonant) {
        return "ay";
    } else {
        return "yay";
    }
} else {
    return "";
}

我猜原始代码有点错误。元音和辅音是布尔表达式,如果我猜代码在语义上做得正确,那么字母不能同时是元音和辅音。也就是说,不会调用ay案例。

从内到外工作

if (vowel) {
    if (consonant) {
        return "ay";
    } else {
        return "yay";
    }
} else {
    return "";
}
我猜原始代码有点错误。元音和辅音是布尔表达式,如果我猜代码在语义上做得正确,那么字母不能同时是元音和辅音。也就是说,不会调用ay案例。

它转换为:

 String result = "";
    if (vowel) {
        if (consonant) {
            result = "ay";
        } else {
            result = "yay";
        }
    } else {
        result = "";
    }
它的意思是:

 String result = "";
    if (vowel) {
        if (consonant) {
            result = "ay";
        } else {
            result = "yay";
        }
    } else {
        result = "";
    }

我认为这比嵌套ifs更好地表达了意图:

String str = "";
if(vowel && consonant) {
    str = "ay";
} else if(vowel) {
    str = "yay"
}

我认为这比嵌套ifs更好地表达了意图:

String str = "";
if(vowel && consonant) {
    str = "ay";
} else if(vowel) {
    str = "yay"
}
会是这样的

String ans = null;
if(vowel)
        {
            if(consonant)
            {
                ans="ay";
            }
            else
            {
                ans="yay";
            }
        }
        else
        {
            ans="";
        }
会是这样的

String ans = null;
if(vowel)
        {
            if(consonant)
            {
                ans="ay";
            }
            else
            {
                ans="yay";
            }
        }
        else
        {
            ans="";
        }

除周围条件外,元音和辅音替换

"(" by "if"
"?" by "{"
":" by "} else {"
")" by "}"
您将得到:

if (vowel) { if (consonant) { "ay" } else { "yay" } } else { "" }
如果您通过美化器运行它,或者只添加您自己的典型缩进,则会变成:

if (vowel) {
   if (consonant) {
      "ay"
   } else {
      "yay"
   }
} else {
   ""
}

除周围条件外,元音和辅音替换

"(" by "if"
"?" by "{"
":" by "} else {"
")" by "}"
您将得到:

if (vowel) { if (consonant) { "ay" } else { "yay" } } else { "" }
如果您通过美化器运行它,或者只添加您自己的典型缩进,则会变成:

if (vowel) {
   if (consonant) {
      "ay"
   } else {
      "yay"
   }
} else {
   ""
}


这是一个表达式,不是一个语句。@TedHopp有什么区别?大多数表达式都不是合法的语句。请注意,到目前为止,所有答案都涉及使用return语句。如果你不想返回表达式的值,当你把它转换成一个语句时,你需要一个地方来存储这个值。我很好奇,你自己搞清楚这个问题的障碍是什么?我想到关于代码的推理,我想知道障碍在哪里。在我看来,这似乎是简单的解构。@user133466像处理任何复杂表达式一样从内到外工作:play parser。什么会以什么顺序得到评估?在这种情况下,由于有明确的参数,这就更容易了。这是一个表达式,而不是一个语句。@TedHopp有什么区别?大多数表达式都不是合法的语句。请注意,到目前为止,所有答案都涉及使用return语句。如果你不想返回表达式的值,当你把它转换成一个语句时,你需要一个地方来存储这个值。我很好奇,你自己搞清楚这个问题的障碍是什么?我想到关于代码的推理,我想知道障碍在哪里。在我看来,这似乎是简单的解构。@user133466像处理任何复杂表达式一样从内到外工作:play parser。什么会以什么顺序得到评估?在这种情况下,由于显式paren,它更容易。它可以,这是检查y。它可以,这是检查y。嵌套if,链式if…potayto,potahto。但是+1表示不使用return语句。嵌套if,链接if…potayto,potahto。但是+1表示不使用return语句。这不是合法的语法。字符串表达式不是语句。@TedHopp-我已经更新了它。这不是合法的语法。字符串表达式不是语句。@TedHopp-我已经更新了它。请通过美化程序运行它。。。最后得到的不是合法的语法。@TedHopp:什么的合法语法?最初发布的三元表达式不是合法的语法,OP只是想知道它的意思,所以我向他展示了如何理解它。如何在程序上下文中使用这些信息作为合法语法完全取决于原始三元表达式的使用上下文。@TedHopp:我看到一些其他答案假设OP在返回上下文中使用了他的三元表达式,而其他人则认为这是在作业的背景下,所以这可能就是你所指的。他也可以在印刷品的背景下使用它,可能还有其他替代品。我只是假设OP可以找到打印、返回、赋值的位置,不管三元表达式对他来说是什么。不完全是-原始代码不是一个法律声明,但它是一个法律表达式。这不合法,我想是德米特里打中了他的头。OP的代码可能在有效的Java程序中的某个地方找到。你永远都不可能。其他答案中假设的一系列上下文是我在对OP问题的评论中指出的结果。除了少数例外赋值、非void函数调用、前后递增/递减等,表达式和语句是不同的
一个美丽的人。。。最后得到的不是合法的语法。@TedHopp:什么的合法语法?最初发布的三元表达式不是合法的语法,OP只是想知道它的意思,所以我向他展示了如何理解它。如何在程序上下文中使用这些信息作为合法语法完全取决于原始三元表达式的使用上下文。@TedHopp:我看到一些其他答案假设OP在返回上下文中使用了他的三元表达式,而其他人则认为这是在作业的背景下,所以这可能就是你所指的。他也可以在印刷品的背景下使用它,可能还有其他替代品。我只是假设OP可以找到打印、返回、赋值的位置,不管三元表达式对他来说是什么。不完全是-原始代码不是一个法律声明,但它是一个法律表达式。这不合法,我想是德米特里打中了他的头。OP的代码可能在有效的Java程序中的某个地方找到。你永远都不可能。其他答案中假设的一系列上下文是我在对OP问题的评论中指出的结果。除少数例外情况外,赋值、非void函数调用、前后递增/递减等,表达式和语句是不同的。在这种情况下,不需要其他表达式和语句。您已经将结果设置为空字符串,为什么需要再次重置为空字符串…:在这种情况下,不需要使用else。您已经将结果设置为空字符串,为什么需要再次重置为空字符串…: