首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找重复相邻元素时,字符串索引超出范围?

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

Stack Overflow用户
提问于 2014-03-06 23:53:25
回答 3查看 98关注 0票数 2

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

例如:

代码语言:javascript
运行
复制
10101010101010000000101010101010 is valid


01010101010110000000000000000000 is not because there are adjacent 1s

这是我所拥有的。

代码语言:javascript
运行
复制
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;
         }
    }

这是我收到的索引错误。我相信,当我检查相邻1s的索引时,会出现错误,但我不知道为什么会超出范围。有人能帮忙吗?

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

回答已采纳

发布于 2014-03-06 23:55:32

试着使用:

代码语言:javascript
运行
复制
for(int k = 0; k < number.length() - 1; k++)

这句话:

代码语言:javascript
运行
复制
number.charAt(k+1)

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

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22238699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档