将字符数组中的字符与字符常量进行比较
Comparing Character from Character-Array to Character constants
我对以下代码有疑问。我的想法是在我继续之前检查我的字符串中的无效字符。但不知何故,我的 involvesInvalidChar- 方法总是 returns 为真,即使它不应该如此。该字符串仅由四个特定的大写字母组成。我正在检查是否还有其他人参与。
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') || ...) {
应该是
if ((ch != 'A') && (ch != 'C') && ...) {
因为您希望无效字符不是是任何个字符,而不仅仅是一个 字符.
2) 有一种更简单的方法,对于大写字母,试试这个:
for(char ch: arrayOfChars)
if((int)ch < 65 || (int) ch > 90)
return false;
这里我们比较的是ASCII码,而不是单独比较每个字符,这样写效率和其他效率都比较高。您还可以在此范围内添加小写字符等。
您应该将无效字符检查更改为:
// check for invalid chars
if ((ch != 'A') && (ch != 'C') && ...) {
return true;
}
你目前的状态总是return正确
您正在使用错误的方法来解决您的问题 -
您不应该在条件 checks.It 之间使用 short-circuit 或运算符 (||) 总是 returning true.You 应该使用 &&
你应该使用正则表达式来解决你的问题
private static boolean involvesInvalidChars (String string)
{
模式 pattern = Pattern.compile("[ABCD]");
匹配器匹配器=pattern.matcher(字符串);
return matcher.find();
}
我对以下代码有疑问。我的想法是在我继续之前检查我的字符串中的无效字符。但不知何故,我的 involvesInvalidChar- 方法总是 returns 为真,即使它不应该如此。该字符串仅由四个特定的大写字母组成。我正在检查是否还有其他人参与。
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') || ...) {
应该是
if ((ch != 'A') && (ch != 'C') && ...) {
因为您希望无效字符不是是任何个字符,而不仅仅是一个 字符.
2) 有一种更简单的方法,对于大写字母,试试这个:
for(char ch: arrayOfChars)
if((int)ch < 65 || (int) ch > 90)
return false;
这里我们比较的是ASCII码,而不是单独比较每个字符,这样写效率和其他效率都比较高。您还可以在此范围内添加小写字符等。
您应该将无效字符检查更改为:
// check for invalid chars
if ((ch != 'A') && (ch != 'C') && ...) {
return true;
}
你目前的状态总是return正确
您正在使用错误的方法来解决您的问题 -
您不应该在条件 checks.It 之间使用 short-circuit 或运算符 (||) 总是 returning true.You 应该使用 &&
你应该使用正则表达式来解决你的问题
private static boolean involvesInvalidChars (String string)
{ 模式 pattern = Pattern.compile("[ABCD]");
匹配器匹配器=pattern.matcher(字符串); return matcher.find();
}