Java 将字符数组中的字符与字符常量进行比较
我对以下代码有问题。我的想法是在继续之前检查字符串中的无效字符。但不知何故,我的involvesInvalidChar方法总是返回true,即使它不应该返回true。字符串仅由四个特定的大写字母组成。我正在检查是否还有其他人参与Java 将字符数组中的字符与字符常量进行比较,java,arrays,string,char,logical-operators,Java,Arrays,String,Char,Logical Operators,我对以下代码有问题。我的想法是在继续之前检查字符串中的无效字符。但不知何故,我的involvesInvalidChar方法总是返回true,即使它不应该返回true。字符串仅由四个特定的大写字母组成。我正在检查是否还有其他人参与 public static int method (String someString) { // array of characters from String char[] charArray = someString.toCharArray();
public static int method (String someString) {
// array of characters from String
char[] charArray = someString.toCharArray();
// are there invalid characters in the Array?
if (involvesInvalidChars(charArray)) {
return -1;
}
... // code following
}
private static boolean involvesInvalidChars (char[] charArray) {
// for each char in the array
for (char ch : arrayOfChars) {
// check for invalid chars
if ((ch != 'A') || (ch != 'C') || ...) {
return true;
}
}
return false;
}
(ch!='A')|(ch!='C')
确实总是正确的(没有char
表示A和C)
将|
更改为&
1)
应该是
if ((ch != 'A') && (ch != 'C') && ...) {
因为您希望无效字符不是任何字符,而不仅仅是一个字符
2) 有一种更简单的方法可以做到这一点,对于大写字母,请尝试以下方法:
for(char ch: arrayOfChars)
if((int)ch < 65 || (int) ch > 90)
return false;
for(字符ch:arrayOfChars)
如果((int)ch<65 | |(int)ch>90)
返回false;
在这里,我们比较ASCII码而不是每个字符,这在书写和其他方面更有效。您还可以在此范围内添加小写字符等。您应该将无效字符检查更改为:
// check for invalid chars
if ((ch != 'A') && (ch != 'C') && ...) {
return true;
}
您当前的情况总是返回true您正在应用错误方法来解决您的问题-
// check for invalid chars
if ((ch != 'A') && (ch != 'C') && ...) {
return true;
}