こんにちは、char 変数がアルファベットの最初の 6 文字のいずれかであるかどうかを調べるために、解決策を考え出そうとしています。そうでない場合は、その真です。
「t」は、特定の不明な値を含む私の char 変数です。
私が持っているもの:
(t < 'a' || t > 'f' && t < 'A' || t > 'F')
こんにちは、char 変数がアルファベットの最初の 6 文字のいずれかであるかどうかを調べるために、解決策を考え出そうとしています。そうでない場合は、その真です。
「t」は、特定の不明な値を含む私の char 変数です。
私が持っているもの:
(t < 'a' || t > 'f' && t < 'A' || t > 'F')
"ABCDEFabcdef".indexOf(t) != -1
ここでわかるように、 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)
、かどうかを確認することもできますtLower < 'a' || tLower > 'f'
。
長い実装が必要な場合は、理解のために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");
}