给定一个字符串,如果" x"的第一个实例返回true。在字符串中紧跟着另一个" x"

时间:2015-10-25 11:27:03

标签: java

  

给定一个字符串,如果字符串中的第一个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;
}

3 个答案:

答案 0 :(得分:2)

你有两个问题:

  1. 在循环的第一次迭代后中断。

  2. 即使你删除了那个中断,如果第一个x后面没有x,你将返回true,但是另一个x确实(例如 - axaxxa将错误地返回true)。

  3. 更好的实施:

    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*");
}