给定一个字符串,如果字符串中的第一个
true
实例紧跟另一个"x"
,则返回"x"
。例如:doubleX("xxxxx") → true
。
以下是我的代码,它适用于除"axxbb"
之外的每个字符串。它为此字符串返回false。
boolean doubleX(String str) {
for (int i = 0; i < str.length() - 1; i++) {
if (str.charAt(i) == 'x' && str.charAt(i + 1) == 'x')
return true;
break;
}
return false;
}
答案 0 :(得分:2)
你有两个问题:
在循环的第一次迭代后中断。
即使你删除了那个中断,如果第一个x后面没有x,你将返回true,但是另一个x确实(例如 - axaxxa
将错误地返回true)。
更好的实施:
boolean doubleX(String str) {
for(int i=0;i<str.length()-1;i++){
if(str.charAt(i)=='x')
if (str.charAt(i+1)=='x') {
return true;
} else {
return false;
}
}
return false;
}
答案 1 :(得分:0)
尝试一下:-
try {
setState(() {
wrongEmail = false;
wrongPassword = false;
});
final newUser = await _auth.signInWithEmailAndPassword(
email: email, password: password);
if (newUser != null) {
Navigator.pushNamed(context, Done.id);
}
} catch (e) {
print(e.code);
if (e.code == 'ERROR_WRONG_PASSWORD') {
setState(() {
wrongPassword = true;
});
} else {
setState(() {
emailText = 'User doesn\'t exist';
passwordText = 'Please check your email';
wrongPassword = true;
wrongEmail = true;
});
}
}
答案 2 :(得分:0)
您也可以将regex用于更简单的代码。 “((w))?”检查“ xx”和“ \ w”之前的任何单词字符。
boolean doubleX(String str) {
return str.matches("(\\w)?(xx)\\w*");
}