【问题标题】:Java Not Greater than Or Equal to Operator for Char TypeJava 不大于或等于 Char 类型的运算符
【发布时间】:2017-03-31 12:31:31
【问题描述】:

所以我试着用简短的方式写这个:

char letter;
while ( letter!='A' && letter!='B' && letter!= 'C... letter!= 'a' 
                                                     && letter !='b' && letter!=c)

基本上,如果用户没有在 A 和 C 之间输入字母,则会运行一个 while 循环,直到输入 A,B,C,a,b,c。

应该是

的形式

while(letter<'a' && letter > 'c')

但它显然不起作用,因为如果我输入 F,它是否大于“C”,但小于“c”,因为 char 使用 ACSII。

【问题讨论】:

  • 你能展示你的代码吗?
  • 简单 -- 将输入的字母更改为小写或大写,然后检查。

标签: java while-loop char operators ascii


【解决方案1】:

有很多方法可以进行这项检查。

char letter;
while (!(letter >= 'A' && letter <= 'C') && !(letter >= 'a' && letter <= 'c'))

或者你可以先在字母上使用Character.toUpperCasetoLowerCase,去掉一半的条件。

或者,如果字母范围很小或不连续,您可以这样做:

char letter;
while ("ABCabc".indexOf(letter) == -1)

当然还有更多方法。

【讨论】:

  • 第二种方式当然看起来更简洁
  • 更简洁,是的。但我还是更喜欢第一个版本。对我来说,那个意图要清楚得多。尤其是它的括号方式和非运算符的使用在我看来使其阅读起来非常流畅。
【解决方案2】:

将字母设置为小写然后检查:

letter = Character.toLowerCase(letter);
while (letter < 'a' && letter > 'c') {
    // ...        
}

这样,即使用户输入了大写字母,也可以进行校验。

【讨论】:

    【解决方案3】:

    你需要两个条件和一点德摩根:

    while(!((letter >= 'A' && letter <= 'C') || (letter >= 'a' && letter <= 'c')))
    

    【讨论】:

      【解决方案4】:

      或好的旧正则表达式

          char input = 'B';
      
          Pattern p = Pattern.compile("a|b|c", Pattern.CASE_INSENSITIVE);
          Matcher m = p.matcher("" + input);
          if (m.find())
          {
              System.out.println("found");
          }
      

      【讨论】:

        【解决方案5】:

        您可以使用字符的 ASCII 码进行检查,例如 'A' 为 65,'a' 为 97。所以你可以做 if (letter > 65) 来检查字母是否大于'A'。希望这可以帮助。 更新 : 要检查字母是否只是 A、B、C、a、b、c 中的一个,请使用以下检查: if (letter >= 65 && letter = 97 && 字母

        【讨论】:

        • 要检查字母是否只是 A、B、C、a、b、c 中的一个,请使用以下检查: if (letter >= 65 && letter = 97 && 字母
        • 我认为反对者的反应是'A' 在问题域中比 65 更容易理解。
        猜你喜欢
        • 2011-03-13
        • 2014-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多