【问题标题】:How to make sure to get specific char variables如何确保获得特定的 char 变量
【发布时间】:2015-03-03 18:47:53
【问题描述】:

我需要这个程序继续询问cardChosen1,直到用户给出介于“a”和“h”之间的答案。我知道我可以放

while (cardChosen1 == 'a' && cardChosen1 == 'b' && cardChosen1 == 'c' &&...

等等。但我希望有一种更简洁的方式。我想要的不仅是大写字母,还有符号和数字

我尝试了以下方法:

 while (cardChosen1 > 'a' && cardChosen1 < 'h')
                {
                    System.out.println ("Hey");
                    cardChosen1 = e.getKeyChar ();
                }

但它不起作用。

【问题讨论】:

  • 尝试对用户给出的特定输入使用 ASCII 码,然后比较 > OR
  • 你可能需要 >= 和 和

标签: java while-loop char


【解决方案1】:

你快到了。问题是,当您确实'a''h' 之间得到答案时,您会循环,而您想要循环只要您没有得到这样的回答。只需打一个否定运算符 (!),就可以了:

while (!(cardChosen1 > 'a' && cardChosen1 < 'h')) {

更好的是,您可以使用一些布尔代数来简化此语句:

while (cardChosen1 <= 'a' || cardChosen1 > 'h')) {

【讨论】:

    【解决方案2】:

    首先,您在上面输入的作为建议答案的正确形式必须是这样的:

    while (cardChosen1 == 'a' || cardChosen1 == 'b' || cardChosen1 == 'c' || ... || cardChosen1 == 'h')
    

    因为你需要一个字符是 "a" or "b" or "c" 。 .. 但是您输入的内容希望字符是从“a”到“h”的所有个字符,这是不可能的。

    现在为您的简洁方式。您已经接近答案,并且只需进行一些小的更改,它就会起作用。但是使用 Explicit Type Cast (当然它是可选的)更具可读性(在 Java 中)。像这样:

    while ((int) cardChosen1 >= (int) 'a' || (int) cardChosen1 <= (int) 'h')
    

    还要注意&gt;=&lt;= 标志,如果它本身是“a”或“h”,则在您接受答案时。 最后,您必须将&amp;&amp; 转换为||,正如我上面解释的那样。

    【讨论】:

      【解决方案3】:

      这个条件普遍是false

      while (cardChosen1 == 'a' && cardChosen1 == 'b' && cardChosen1 == 'c' &&...
      

      这种情况会起作用,但我希望您创建一个Set&lt;Character&gt; 并通过contains() 查找它是否存在于Set

       while (cardChosen1 > 'a' && cardChosen1 < 'h')
      

      【讨论】:

        【解决方案4】:

        您应该检查ASCII codes

        例如,如果您想检查ah 范围尝试

        (int)cardChosen1 > 97 || (int)cardChosen1 < 122
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-03-30
          • 2021-12-12
          • 1970-01-01
          • 1970-01-01
          • 2011-06-08
          • 2011-07-06
          • 2012-04-12
          • 1970-01-01
          相关资源
          最近更新 更多