Java 有没有一种更有效的方法来遍历字符串直到到达某个字符?
在这个方法中,我试图遍历一个包含70个字符的字符串,直到找到一个不是“a”或“B”的字母。一旦我发现一个不属于我的角色,我应该返回“ERR!”;如果字符串长度不完全为70个字符,我也会返回此语句 我做这件事的方法是跟踪到目前为止统计的字母总数,以及错误字母的总数(字母不是“A”或“B”)。然后我说,如果错误字母的数量不是0,并且字符串的长度不是70,则返回“ERR!”消息Java 有没有一种更有效的方法来遍历字符串直到到达某个字符?,java,string,Java,String,在这个方法中,我试图遍历一个包含70个字符的字符串,直到找到一个不是“a”或“B”的字母。一旦我发现一个不属于我的角色,我应该返回“ERR!”;如果字符串长度不完全为70个字符,我也会返回此语句 我做这件事的方法是跟踪到目前为止统计的字母总数,以及错误字母的总数(字母不是“A”或“B”)。然后我说,如果错误字母的数量不是0,并且字符串的长度不是70,则返回“ERR!”消息 public static String checkInput(String answers) { int
public static String checkInput(String answers) {
int count = 0;
int wrong = 0;
String errorMessage = "";
for(int i = 0; i < answers.length(); i++) {
count++;
if(answers.charAt(i) != 'A' && answers.charAt(i) != 'B') {
wrong++;
}
}
if(wrong != 0 || count != ANSWER_LENGTH) {
errorMessage = "ERR!";
}
return errorMessage;
}
publicstaticstringcheckinput(字符串应答){
整数计数=0;
int错误=0;
字符串errorMessage=“”;
for(int i=0;i
我的代码工作得非常好,但如果有什么可以缩短或简化以减少程序中的行数,那就是我所需要的。任何想法/建议都将不胜感激 行数(或代码行数)在java中并不重要,但无论如何,这里有一个更短更快的变体:
public static final String checkInput(final String answers) {
if (answers.length() != ANSWER_LENGTH)
return "ERR!"; // fail fast
for (int i = 0; i < answers.length(); i++)
if (answers.charAt(i) != 'A' && answers.charAt(i) != 'B')
return "ERR!"; // fail fast
return "";
}
公共静态最终字符串检查输入(最终字符串答案){
if(answers.length()!=答案长度)
返回“ERR!”;//快速失败
for(int i=0;i
行数(或代码行数LOC)在java中不是很重要,但无论如何,这里有一个更短更快的变体:
public static final String checkInput(final String answers) {
if (answers.length() != ANSWER_LENGTH)
return "ERR!"; // fail fast
for (int i = 0; i < answers.length(); i++)
if (answers.charAt(i) != 'A' && answers.charAt(i) != 'B')
return "ERR!"; // fail fast
return "";
}
公共静态最终字符串检查输入(最终字符串答案){
if(answers.length()!=答案长度)
返回“ERR!”;//快速失败
for(int i=0;i
我会在Lashane的答案中添加一个空检查,以确保稳健性
if (answers == null || answers.length() != 70)
我会在Lashane的答案中添加一个空检查,以确保稳健性
if (answers == null || answers.length() != 70)
这样,如果存在除A或B以外的任何字符,它将立即失败
public static final String checkInput(final String answers) {
if (answers==null || answers.length() != ANSWER_LENGTH)
return "ERR!"; // fail fast
if(!answer.matches("[AB]*"))
return "ERR!"; // fail fast
return "";
}
这样,如果存在除A或B以外的任何字符,它将立即失败
public static final String checkInput(final String answers) {
if (answers==null || answers.length() != ANSWER_LENGTH)
return "ERR!"; // fail fast
if(!answer.matches("[AB]*"))
return "ERR!"; // fail fast
return "";
}
一个快速的观察是,您不需要计数变量。您可以比较答案。长度()==答案长度。首先进行比较。在for循环之前。这样就可以避免这种情况下不必要的循环。字符串上是否有其他信息,如字符串中的A和B的数字?可能是字符串。匹配(“[AB]*”)帮助您可以在发现第一个错误后立即检查字符串长度,并将其从循环中打断。@Dongqing字符串中的所有字母都必须是A或BA快速观察您不需要计数变量。您可以比较答案。长度()==答案长度。首先进行比较。在for循环之前。这样就可以避免这种情况下不必要的循环。字符串上是否有其他信息,如字符串中的A和B的数量?可能是字符串。匹配(“[AB]*”)帮助您可以检查字符串长度,并在发现第一个错误后立即中断循环。@Dongqing字符串中的所有字母都必须是A或B