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

Java字符串:检查连续的字母或数字,java,string,Java,String,问题:我在用Java玩游戏,我试图计算字符串中连续的“字符” 例如: Scanner in = new Scanner(System.in); int n = in.nextInt(); String binaryString = Integer.toBinaryString(n); 上面的代码返回输入的整数值的二进制字符串。如果我们输入数字5,它将返回:101 现在,我希望遍历字符串并检查字符串中是否有任何连续的1 for (int i = 0; i < binaryString.l

问题:我在用Java玩游戏,我试图计算字符串中连续的“字符”

例如:

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

String binaryString = Integer.toBinaryString(n);
上面的代码返回输入的整数值的二进制字符串。如果我们输入数字5,它将返回:101

现在,我希望遍历字符串并检查字符串中是否有任何连续的1

for (int i = 0; i < binaryString.lenth(); i++)
{
    // code comes here...
}
for(int i=0;i
我不知道如何检查这个。我尝试了以下方法:

    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;
            }
        }
    }
for(int i=0;i
但这显然会抛出一个ArrayIndexOutOfBounds,因为
i+1
将生成一个大于数组长度的数字

提前感谢您的回答


Owen

尝试运行小于strin长度的for循环

 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;
        }
    }
}
for(int i=0;i<(binaryString.length()-1);i++)
{
char charAtPos=binaryString.charAt(i);
char charAtNextPos=binaryString.charAt(i+1);
如果(字符=1)
{
if(charAtPos==charAtNextPos)
{
连续+=1;
}
}
}

尝试运行for循环,使其大小小于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;
        }
    }
}
for(int i=0;i<(binaryString.length()-1);i++)
{
char charAtPos=binaryString.charAt(i);
char charAtNextPos=binaryString.charAt(i+1);
如果(字符=1)
{
if(charAtPos==charAtNextPos)
{
连续+=1;
}
}
}

我们仍然可以使用and运算符简化您的代码

  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;
              }       
          }
       }
import java.util.Scanner;
类StackBinary
{
公共静态void main(字符串参数[])
{
扫描仪输入=新扫描仪(系统输入);
字符串n=Integer.toBinaryString(in.nextInt());
对于(int i=0;i
我们仍然可以使用and运算符简化您的代码

  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;
              }       
          }
       }
import java.util.Scanner;
类StackBinary
{
公共静态void main(字符串参数[])
{
扫描仪输入=新扫描仪(系统输入);
字符串n=Integer.toBinaryString(in.nextInt());
对于(int i=0;i
您只需要一行:

binaryString.split("1(?=1)").length() - 1;
您只需要一行:

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

那么for条件中的binaryString.length()-1呢?:)那么for条件中的binaryString.length()-1呢?:)