Java字符串:检查连续的字母或数字

时间:2016-08-20 10:11:18

标签: java string

问题:我正在玩Java,我正在尝试计算字符串中的连续“字符”。

示例:

Scanner in = new Scanner(System.in);
int n = in.nextInt();

String binaryString = Integer.toBinaryString(n);

上面的代码返回输入的整数值的二进制字符串。如果我们输入数字5,则返回:101

我现在希望遍历String并检查String中是否有连续的1。

for (int i = 0; i < binaryString.lenth(); i++)
{
    // code comes here...
}

我不知道怎么检查这个。我尝试过以下方法:

    for (int i = 0; i < binaryString.length(); i++)
    {
        char charAtPos = binaryString.charAt(i);
        char charAtNextPos = binaryString.charAt(i+1);
        if (charAtPos == '1')
        {
            if (charAtPos == charAtNextPos)
            {
                consecutive += 1;
            }
        }
    }

但是这显然会抛出一个ArrayIndexOutOfBounds,因为i+1会产生一个大于数组长度的数字。

提前感谢您的回答。

欧文

3 个答案:

答案 0 :(得分:2)

尝试运行for循环,其大小为1,小于strin的长度

 for (int i = 0; i < (binaryString.length()-1); i++)
{
    char charAtPos = binaryString.charAt(i);
    char charAtNextPos = binaryString.charAt(i+1);
    if (charAtPos == '1')
    {
        if (charAtPos == charAtNextPos)
        {
            consecutive += 1;
        }
    }
}

答案 1 :(得分:1)

您只需要一行:

binaryString.split("1(?=1)").length() - 1;

答案 2 :(得分:0)

我们仍然可以使用和运算符

简化您的代码
  import java.util.Scanner;
  class StackBinary
    {
      public static void main(String args[])
       {
            Scanner in = new Scanner(System.in);
            String n = Integer.toBinaryString(in.nextInt());

            for (int i = 0; i < n.length()-1; i++)
            {
               char charAtPos = n.charAt(i);
               char charAtNextPos = .charAt(i+1);
              if (charAtPos == '1' && charAtNextPos == '1')
              {
                   consecutive+=1;
              }       
          }
       }