Java实现文本文件二进制串转十进制功能的开发问题求助
现有代码问题修复
你当前的BinaryDecoder类中binaryDetector方法存在两处逻辑缺陷,会导致程序运行报错,先修复该方法:
- 原方法直接将字符串转为整数,当二进制字符串长度超过10位时会触发整数溢出,输入非数字字符时会直接抛出异常
- 修复后的方法直接遍历字符串逐位校验即可,代码如下:
public static boolean binaryDetector(String x) { for (int i = 0; i < x.length(); i++) { char c = x.charAt(i); if (c != '0' && c != '1') { return false; } } return true; }
第二个类完整实现
因为BinaryDecoder中的两个核心方法都是static静态方法,直接通过类名.方法名即可调用,完整的BinaryToDecimalTester代码如下:
import java.io.File; import java.util.Scanner; public class BinaryToDecimalTester { public static void main(String[] args) throws Exception{ Scanner inFile = new Scanner(new File("Strings.txt")); // 逐行读取文件内容 while(inFile.hasNextLine()) { String inString = inFile.nextLine().trim(); // 跳过空行 if (inString.isEmpty()) { continue; } // 调用BinaryDecoder的校验方法 boolean isBinary = BinaryDecoder.binaryDetector(inString); if (isBinary) { // 调用二进制转十进制方法 int decimal = BinaryDecoder.binaryToDecimal(inString); System.out.printf("二进制字符串:%s ,对应十进制值:%d%n", inString, decimal); } else { System.out.printf("字符串:%s ,不是合法二进制数%n", inString); } } inFile.close(); } }
运行说明
- 两个类需要放在同一个包下,否则需要导入
BinaryDecoder的全类名 - 运行时保证
Strings.txt放在项目根目录,和class文件同层级即可 - 针对你给出的示例文本文件,运行输出如下:
二进制字符串:1011010011101 ,对应十进制值:5789 二进制字符串:1011101110101 ,对应十进制值:5997 字符串:1201234000100 ,不是合法二进制数 字符串:1234456000110 ,不是合法二进制数 二进制字符串:1011010100011 ,对应十进制值:5795
内容的提问来源于stack exchange,提问作者Shane
相关产品推荐
相关产品推荐

