簡體   English   中英

Java字符串:檢查連續的字母或數字

[英]Java String: Checking for consecutive letters or numbers

問題:我正在用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 < 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會產生一個比數組長度大的數字。

預先感謝您的回答。

歐文

嘗試運行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;
        }
    }
}

您只需要1行:

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

我們仍然可以使用和運算符簡化您的代碼

  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;
              }       
          }
       }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM