我正在阅读一些代码,我遇到了以下三元表达式。您如何将以下三元运算符转换为常规 if 语句?
( (vowel) ? ((consonant) ? "ay" : "yay") : "")
我正在阅读一些代码,我遇到了以下三元表达式。您如何将以下三元运算符转换为常规 if 语句?
( (vowel) ? ((consonant) ? "ay" : "yay") : "")
像这样的东西:
if(vowel) {
if(consonant) {
return "ay"
} else {
return "yay"
}
} else {
return ""
}
请注意,我之所以使用return
三元运算符,是因为三元运算符是一个表达式,而if
在 Java 中是一个语句,因此它没有值。您必须将其包装在返回的方法中String
。
从内到外工作。
if (vowel) {
if (consonant) {
return "ay";
} else {
return "yay";
}
} else {
return "";
}
我猜原始代码在某种程度上是错误的。vowel
和consonant
是布尔表达式,并且(如果我猜测代码正确执行的操作)在语义上一个字母不能既是元音又是辅音。也就是说,"ay"
不会调用此案。
它转化为:
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"
}
会是这样
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 {
""
}