1

您好,我正在尝试提出一个解决方案,以查找我的 char 变量是否是字母表的前六个字母之一。如果不是,那么它是真的。

't' 是我的 char 变量,其中包含某个未知值。

是)我有的:

(t < 'a' || t > 'f' && t < 'A' || t > 'F')
4

6 回答 6

3
  "ABCDEFabcdef".indexOf(t) != -1
于 2013-08-28T12:10:01.900 回答
3

正如您在此处看到的http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html &&运算符的优先级高于||您的条件

(t < 'a' || t > 'f' && t < 'A' || t > 'F')

是相同的

(t < 'a' || (t > 'f' && t < 'A') || t > 'F')
            ^^^^^^^^^^^^^^^^^^^^

您可能想在这些部分中拆分

((t < 'a' || t > 'f') && (t < 'A' || t > 'F'))
 ^^^^^^^^^^^^^^^^^^^^    ^^^^^^^^^^^^^^^^^^^^

您还可以使用 使您的角色小写,char tLower = Character.toLowerCase(t)然后检查 if tLower < 'a' || tLower > 'f'

于 2013-08-28T12:10:11.263 回答
1

你的情况有点不对,你是说

((t >= 'g' && t <= 'z') || (t >= 'G' && t <= 'Z'))

这种情况说:

t 大于或等于“g”且小于或等于“z”

t 大于或等于“g”且小于或等于“Z”

你的情况说

t 小于 'a'

大于 'f' 并且 t 小于 'A'

大于“F”

所以每个字符,包括数字字符和符号都可以通过条件

此外,当使用带有“(”和“)”的if语句时,&&||解释哪些部分是分开的

于 2013-08-28T12:02:50.860 回答
0
int array[] = {'a','b','c','d','e','f'};
string toCheck = 'b';

for(int i=0; i<array.length; i++) {
  if(toCheck.equal(array[i]) {
     //oh crap
  }
  else //we are in home
}
于 2013-08-28T12:05:53.497 回答
0

表达方式

((t >= 'a' && t <= 'f') || (t >= 'A' && t <= 'F'))

计算true字母是否介于 A 和 F(大写或小写)之间。

true如果不是这种情况,您希望它评估,所以

!((t >= 'a' && t <= 'f') || (t >= 'A' && t <= 'F'))

将工作。

于 2013-08-28T12:12:20.863 回答
0

如果您想要一些冗长的实现,为了便于理解,您可以使用 JDK 1.7 进行尝试。

 char t='t';
    boolean status=true;
    switch (String.valueOf(t).toLowerCase())
    {
        case "a": status=false;
            break;
        case "b": status=false;
            break;
        case "c": status=false;
            break;
        case "d": status=false;
            break;
        case "e": status=false;
            break;
        case "f": status=false;
            break;
    }
    if(status){
        System.out.println("condition satisfied");
    }else{
        System.out.println("letter is "+String.valueOf(t)+" and it is between a and f");
    }
于 2013-08-28T12:26:47.413 回答