You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java十进制转8位二进制代码疑问:移除某行后星号数量变化原因

为什么移除result+=0;后星号数量变成7个?

嘿,我来帮你捋清楚这个问题的根源!核心原因其实很直白:result+=0;这行代码会实时修改result字符串的长度,而你的星号打印逻辑正好依赖result的当前长度来计算打印次数。

咱们一步步拆解细节:

  1. 先看result+=0;的本质:在Java里,当你把int类型的0和字符串result做拼接操作时,0会被自动转成字符串"0"并追加到result末尾,这会直接让result的长度增加1。
  2. 结合你给出的注释片段// int j=8-result.length(); // for(int i=0;i,能明显看出来你原本的星号打印逻辑是:先计算8 - result.length()得到要打印的星号数量,再循环打印对应次数的*。
  3. 对应你的运行结果:
    • 保留result+=0;时,result执行完拼接后长度变成了4,8-4=4,所以输出4个星号;
    • 移除这行后,result回到初始的二进制字符串长度1,8-1=7,自然就打印出7个星号了。

补充个小建议:你提到result的长度会实时更新,要是你希望星号数量不随result的后续修改而变化,可以提前把初始长度存到变量里,比如:

// 提前保存初始二进制字符串的长度,避免后续修改影响星号数量
int initialLen = result.length();
int starCount = 8 - initialLen;
for(int i=0; i < starCount; i++){
    System.out.print("* ");
}

这样不管你后续有没有result+=0;这类修改操作,星号数量都会稳定基于初始长度计算啦。

内容的提问来源于stack exchange,提问作者Ihab Khaled Shhadat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:00:23