如何去除Arrays.toString()输出的数组方括号与末尾多余0?无循环实现十进制转二进制
解决十进制转二进制的几个问题
嘿,我来帮你搞定这几个困惑!咱们一个个来聊:
1. 无需循环的实现方式
其实Java标准库已经帮你做好这件事啦!直接用Integer.toBinaryString()方法,传入你的十进制整数,就能直接得到对应的二进制字符串,完全不用自己写循环或者数组,简单到爆:
int b = 17; System.out.println(Integer.toBinaryString(b)); // 直接输出 "10001"
这个方法底层已经帮你处理了所有转换逻辑,既高效又省心。
2. 去除数组末尾的多余0
如果是出于学习目的,一定要用数组来实现的话,你可以利用循环结束后记录的i值(它正好是二进制有效位的个数),把原数组复制成一个长度为i的新数组,这样就自动去掉末尾的多余0了:
int b=17,i=0; int s[]=new int[10]; while(b>0) { s[i]=(b%2); b=b/2; i++; } // 复制出只包含有效位的新数组 int[] validBits = Arrays.copyOf(s, i); System.out.println(Arrays.toString(validBits)); // 输出 [1, 0, 0, 0, 1]
3. 处理Arrays.toString()的输出格式
要是你想用Arrays.toString()得到没有方括号和多余0的纯二进制字符串,那可以先拿到上面的有效数组validBits,然后对Arrays.toString()的结果做字符串替换:
String binaryStr = Arrays.toString(validBits) .replace("[", "") // 去掉左方括号 .replace("]", "") // 去掉右方括号 .replace(", ", ""); // 去掉逗号和空格 System.out.println(binaryStr); // 输出 "10001"
总结一下:如果只是需要输出十进制对应的二进制字符串,优先用Integer.toBinaryString(),这是最简洁的方案;如果是练习手写转换逻辑,那用数组复制+字符串替换的方式也能达到你的需求。
内容的提问来源于stack exchange,提问作者Siddhant
相关产品推荐
相关产品推荐

