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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:06:03