【问题标题】:How can I test if a character is a vowel using a single if statement? [duplicate]如何使用单个 if 语句测试字符是否为元音? [复制]
【发布时间】:2020-10-21 01:05:38
【问题描述】:

如何使用单个 if 语句测试单个字符是否为元音?

更实际地,我如何将下面的当前逻辑合并到单个 if 语句中?

if (valor == 'a'); System.out.println("xdd");
if (valor == 'e'); System.out.println("xdd");
if (valor == 'i'); System.out.println("xdd");
if (valor == 'o'); System.out.println("xdd");
if (valor == 'u'); System.out.println("xdd");

【问题讨论】:

标签: java


【解决方案1】:

试试这个。无论valor 是字符还是字符串,这都会起作用。

if ("aeiou".indexOf(valor) >= 0) {
    System.out.println("xdd");
}

【讨论】:

    【解决方案2】:

    你可以试试String.indexOf()

    final String vowels = "aeiou";
    char valor = 'e';
    if (vowels.indexOf(valor) != -1) {
        System.out.println("xdd");
    }
    

    【讨论】:

      【解决方案3】:

      您可以利用|| 运算符,该运算符基本上用作or,如下所示:

      if(valor=='a'||valor=='e'||valor=='i'||valor=='o'||valor=='u'){
          System.out.println("xdd");
      }
      

      因为在这种情况下,它总是会打印相同的东西。

      【讨论】:

      • 这就是我一直在寻找的东西,ty men,其余的答案都很好,但不像这个那么简单
      • @Legoruu 如果我的回答回答了您的问题,请考虑接受,以便将来的访问者得到帮助
      【解决方案4】:

      一种也可以轻松扩展的简单方法是使用索引字符串并检查您的变量是否是该字符串的一部分。

      String vowels = "aeiou";
      if (vowels.indexOf(valor) >= 0) {
          // do whatever you have to
      }
      

      【讨论】:

        【解决方案5】:

        valor是一个字符转换成String,那么:

        if ("AaEeIiOoUu".contains(valor)) {
            System.out.println("xdd");
        }
        

        【讨论】:

        • String#contains 需要 CharSequence 参数,而不是单个 char。并使用CharSequence 调用它也会产生true,例如"ioO",这是不应该的。
        • @KonradRudolph OP 说 我如何测试单个字符是否是元音, 所以根据 OP 的声明,它将是一个字符的 CharSequence。所以ioO 不相关。
        • @WJS 在 OP 的代码中,valor 的类型是 char。如果它不是字符,测试自然应该确保它只有一个字符长,这不能只是假设为给定的。
        【解决方案6】:

        使用正则表达式。

        字符串 str = "a";

        if (str.matches("[AaeEiIoOuU]") {
            System.out.println("It's a vowel!");
        }
         else {
           System.out.println("it's not a vowel!");
        }
        

        【讨论】:

        • 啊,完全正确。我认为matches 的唯一限制是它在开头匹配,但它也必须匹配 entire 字符串。 Python 的 re.match 的行为令人困惑,这就是我记错的原因。
        【解决方案7】:

        您可以通过使用带有 java 逻辑 OR 运算符的 if 条件语句轻松实现此目的。

        使用短路或运算符

        这样会更有效率,因为这会在java在检查逻辑条件的同时满足满足条件的第一点返回true。

        if(valor=='a'||valor=='e'||valor=='i'||valor=='o'||valor=='u'){
            System.out.println("xdd"); 
        }
        
        

        【讨论】:

          【解决方案8】:

          正如许多人建议的那样,您可以使用indexOf||。我不会重复自己。您也可以使用以下内容,

          public class VowelOrNot {
          
              public static void main(String[] args) {
          
                  String valor = "z";
          
                  switch (valor.toLowerCase()) {
                      case "a":
                      case "e":
                      case "i":
                      case "o":
                      case "u":
                          System.out.println(valor + " is vowel");
                          break;
                      default:
                          System.out.println(valor + " is consonant");
                  }
              }
          }
          

          我正在使用开关盒。当您想在多种情况下避免 if-else/if-if 阶梯时,这很方便。基本上,如果输入与任何一种情况匹配,那么它会打印该字符串是元音,否则它是辅音。请注意,break 很重要。否则,如果valor 是元音,它将检查默认大小写并打印辅音。

          如果需要,您可以在变量声明中将String 替换为char,并在switch case 中适当地处理它。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-16
            • 2021-06-07
            • 1970-01-01
            • 2015-05-29
            • 1970-01-01
            相关资源
            最近更新 更多