1

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

 ( (vowel) ? ((consonant) ? "ay" : "yay") : "")
4

6 回答 6

6

像这样的东西:

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

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

于 2012-11-06T18:01:22.893 回答
1

从内到外工作。

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

我猜原始代码在某种程度上是错误的。vowelconsonant是布尔表达式,并且(如果我猜测代码正确执行的操作)在语义上一个字母不能既是元音又是辅音。也就是说,"ay"不会调用此案。

于 2012-11-06T18:02:35.950 回答
1

它转化为:

 String result = "";
    if (vowel) {
        if (consonant) {
            result = "ay";
        } else {
            result = "yay";
        }
    } else {
        result = "";
    }
于 2012-11-06T18:02:57.280 回答
1

我认为这比嵌套 ifs 更能传达意图:

String str = "";
if(vowel && consonant) {
    str = "ay";
} else if(vowel) {
    str = "yay"
}
于 2012-11-06T18:04:41.297 回答
1

会是这样

String ans = null;
if(vowel)
        {
            if(consonant)
            {
                ans="ay";
            }
            else
            {
                ans="yay";
            }
        }
        else
        {
            ans="";
        }
于 2012-11-06T18:06:52.630 回答
1

除了条件周围的(),(元音)和(辅音),替换

"(" by "if"
"?" by "{"
":" by "} else {"
")" by "}"

你会得到:

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

如果您通过美化器运行它或只是添加您自己的典型缩进,则变为:

if (vowel) {
   if (consonant) {
      "ay"
   } else {
      "yay"
   }
} else {
   ""
}
于 2012-11-06T18:08:37.010 回答