Java while循环实现十进制转二进制时字符串反转失效求助
十进制转二进制代码问题修复
原代码的核心问题:
- 多余的奇偶分支:十进制转二进制的逻辑对所有正整数都适用,不需要分开处理奇偶,重复代码反而容易引入错误。
- 反转逻辑无效:每次只对单个字符的字符串反转,单个字符反转后还是它本身,等于没做任何反转操作。正确的做法是先把所有余数拼接成完整字符串,再整体反转。
- 偶数分支计算顺序错误:先执行
originalnum /= 2再取余,会丢失第一个余数,导致结果少一位。
修正后的代码
import java.util.Scanner; public class NumberConversion { public static void main(String[] args) { Scanner getnumber = new Scanner(System.in); System.out.print("Enter number: "); int originalnum = getnumber.nextInt(); // 处理输入0的特殊情况 if (originalnum == 0) { System.out.println("0"); return; } int remainder; String binary_temp = ""; // 统一处理所有正整数,循环取余并拼接 while (originalnum > 0) { remainder = originalnum % 2; originalnum /= 2; binary_temp += String.valueOf(remainder); } // 整体反转字符串得到正确的二进制结果 String binarynum = new StringBuffer(binary_temp).reverse().toString(); System.out.println(binarynum); } }
代码说明:
- 移除了冗余的奇偶判断,用同一个while循环处理所有正整数。
- 初始化空字符串
binary_temp,每次将余数拼接到字符串末尾,此时得到的是反转的二进制序列。 - 循环结束后,通过
StringBuffer整体反转字符串,得到正确的二进制数。 - 增加了输入0的特殊处理,避免输入0时无输出的问题。
内容的提问来源于stack exchange,提问作者Chris Chen
相关产品推荐
相关产品推荐

