gpt4 book ai didi

java - StringBuffer循环设置

转载 作者:行者123 更新时间:2023-11-30 03:55:17 27 4
gpt4 key购买 nike

我想循环遍历 StringBuffer 并使用每个字符的值来计算输出。调试显示,当我传入 10 时,sb.length() 为 4,尽管它应该是 2。我应该使用不同的方法吗?

    public double ConvertDecimal(double in) {

double out = 0;

sb = new StringBuffer(String.valueOf(Math.floor(in));

sb.reverse();

for (int i = 0; i < sb.length(); i++) {

out += Double.valueOf(sb.charAt(i)) * Math.pow(3,i);

}

return Math.floor(out);

}

对于传入“10”,第一次迭代输出=48,当我想要以下内容时,我不明白哪里出了问题:

in = 10

sb.reverse = "01"

//循环的第一次迭代 - sb.reverse 的第一个位置处的字符为 0out += Double.valueOf(sb.chartAt(0)) * Math.pow(3,0);

//循环的第二次迭代 - sb.reverse 的第二个位置处的字符为 1out += Double.valueOf(sb.chartAt(1)) * Math.pow(3,1);

返回;//输出应该是3

最佳答案

如果你看http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html#reverse()你会看到reverse返回一个新的StringBuffer

所以将你的代码更改为

sb = sb.reverse();

此外,由于您使用的是整数而不是 double ,那么为什么要将 char 转换为 double ?

尝试

int x = Character.getNumericValue(sb.charAt(i));
out += x * Math.pow(3,i);

关于java - StringBuffer循环设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23377814/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com