java - 查找重复相邻元素时字符串索引超出范围?

标签 java string binary

我需要打印 32 位二进制数的所有实例,其中没有两个 1 彼此相邻。

例如:

10101010101010000000101010101010 is valid


01010101010110000000000000000000 is not because there are adjacent 1s

这是我所拥有的。

String number;
    boolean valid = false;


    for(int i = 0; i<= 1e32; i++)
    {
         //create binary number
         number = String.format("%32s", Integer.toBinaryString(i)).replace(' ', '0');

         for(int k = 0; k <= number.length() - 1; k++)
         { 
             //check if there are adjacent 1s
             if((number.charAt(k) == '1') && (number.charAt(k+1) == '1'))//I believe error is from this line
             {
                 valid = false;
             }
             else
             {
                 valid = true;
             }
         }
         if(valid == true)
         {
            //Print if there are no adjacent 1s
            System.out.println(number);
            valid = false;
         }
    }

这是我收到的索引错误。我相信错误来自于检查相邻 1 的索引时,但我无法弄清楚为什么它超出范围。有人可以帮忙吗?

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of    range: 32
at java.lang.String.charAt(String.java:658)
at program.program.main(program.java:30)
Java Result: 1

最佳答案

尝试使用:

for(int k = 0; k < number.length() - 1; k++)

行:

number.charAt(k+1)

将超出当前设置的范围,移过数组中的最后一个元素。

关于java - 查找重复相邻元素时字符串索引超出范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22238699/

相关文章:

java - 如何在 Java 中编写 3 个字节的 unicode 文字?

PHP - 如何生成带有控制字符或二进制数据的字符串?

Java将时间格式转换为整数或长

c# - 如何在 C# 中将对象写入二进制文件?

binary - 将非终止二进制数转换为十进制数

java - 在logging.properties中自定义catalina日志路径

java - 如何使用不同的资源文件夹配置 Maven 配置文件?

java - Server Tomcat v8.5 Server at localhost 无法启动 Spring Project

c - 为在C中转换为字符串的int数组动态分配内存

binary - 使用 Systemverilog 读取然后打印二进制文件。第一个字节读取并打印正常,遇到在 ms 位位置包含 1 的 trouble\w 字节