【发布时间】:2014-02-04 12:39:00
【问题描述】:
虽然我正在尝试做的事情非常明显,但我不想被告知如何得出最终结果,即使我的处理方式是错误的(尽管提示会受到赞赏) .总之……
以字符串格式的数字“01110101”的 8 位二进制表示为例。如果我颠倒数字,我会得到“10101110”。如果我想找到每个 1 的位置并将它们添加到一个数组中,我将如何去做呢?我尝试使用 indexOf('1'),但它一直返回 0 或 1 作为索引。
编辑:最终结果是指我试图通过所有这些实现的总体目标,而不是我要问的问题。我只是想阻止有人插手告诉我如何从二进制转换为 dec,而不是回答我当前的问题...
Edit2:好的,我会更具体一点。基本上,我正在尝试获取一个二进制数,将它们翻转并获取它们的位置并将它们添加到数组中。然后我将尝试遍历数组,取每个位置的 2 次方并将它们相加。也许不是从二进制转换为十进制的最有效方法,但这是我想出的。
【问题讨论】:
-
indexOf('1')的问题在于它只返回该字符的第一次出现(由String documentation 指定)。话虽如此,既然您不想要任何具体的答案,请尝试考虑不同的方式来表示您的字符串。查看 String 文档,看看可以调用哪些方法。 -
hint hint charAt(index)
-
正如其他人已经指出的那样,您可以使用
string.charAt(index)方法将您指向的字符返回给您。您所要做的就是遍历字符串的所有字符并测试它们是 1 还是 0 .. 或者您所期望的。但如果你想让提示更具体,我当然可以给你一些代码 -
嗯...不过我不确定它是如何应用的。我正在寻找 1 的位置,而不是测试它们是否是 1。
-
在遍历字符串时你会知道索引。喜欢:
for(int i=0;i<myString.length; i++){ if(myString.charAt(i).equalsIgnoreCase("1"){ // i is the position of the next 1}}
标签: java string char substring