当前位置: 首页 > 知识库问答 >
问题:

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

钦英发
2023-03-14

问题:我在用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,因为i1将产生一个大于数组长度的数字。

提前感谢您的回答。

欧文

共有3个答案

黄鸣
2023-03-14

我们仍然可以使用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;
              }       
          }
       }
单于正业
2023-03-14

你只需要1行:

binaryString.split("1(?=1)").length() - 1;
韩涵衍
2023-03-14

试着运行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;
        }
    }
}
 类似资料:
  • 问题内容: 我有一个字符串“ BC + D * E-”。我想检查字符串的每个字符是否为字母。我尝试使用isLetter(),但它甚至将=,*和-都视为字母。请您帮我一下。谢谢 问题答案: 尝试

  • 问题内容: 用Java编写一个函数,该函数接受一个字符串数组,并且从字符串数组中仅返回那些具有重复的特定字母的字符串,例如:如果I / P为 那么O / P应该是 我可以使用解决 IS 没有使用正则表达式的方式 ,使之短? 问题答案: 您可以使用反向引用: 通过Debuggex进行可视化 Java示例: 印刷品:

  • 我需要检查字符串(单词,没有空格)是否有给定字母表的任何字母。 我想有效地比较字符串和字母表。我想检查字符串是否由字母表中的字母组成。现在我的字母表在ArrayList中,在For循环中,我检查字符串是否包含ArrayList的字母,如果为true,则退出,否则继续下一个字母。上面字符串A的示例将返回false,因为p和l不是字母表的一部分。但对于B,它将返回真值。 这样做能更有效吗?谢谢你的帮助

  • 问题内容: 检查字符串是否仅包含字母数字字符的最快方法是什么。 我有一些代码会占用大量CPU,我想知道是否有比使用预编译正则表达式更快的方法。 问题答案: 我已经编写了使用正则表达式(根据其他答案)与不使用正则表达式进行比较的测试。在运行Java 1.6的四核OSX10.8计算机上进行的测试 有趣的是,使用正则表达式比手动迭代字符串要慢5到10倍。此外,该功能比的速度略快。一种支持允许扩展Unic

  • 问题内容: 这个想法是读取String并确认它不包含任何数字字符。因此,“ smith23”之类的内容将不被接受。 问题答案: 你想要什么?速度还是简单?为了提高速度,请选择基于循环的方法。为简单起见,请使用一种基于内衬RegEx的方法。 速度 简单

  • 大家好,我正在努力找出如何检查“我的edittext”值是否包含字母和数字,如果用户输入例如“JDF23D”告诉他们删除数字,我会显示一个snackbar,但我的错误是不管它保留在那里,否则你会建议什么?