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

JAVA读取文件数字并乘2写入新文件问题求助

问题诊断与修复方案

看起来你是把文件里的数字字符当成ASCII编码值来运算了,这才导致输出变成了bdfhjlnprb这类字符——举个例子:原文件里的字符'1'对应的ASCII码是49,乘2后得到98,正好是字符'b';'2'的ASCII码50乘2得100,对应'd',以此类推,完全匹配你得到的结果。

错误原因

你的代码没有将读取到的字符串形式的数字转换为整数类型,而是直接对字符本身(或其ASCII值)进行了乘法操作,导致数值计算变成了字符编码的运算。

修正后的代码(以Python为例)

假设你用的是Python,正确的做法是先把每行的字符串转成整数,计算后再转成字符串写入文件:

# 打开输入文件和输出文件,使用with语句自动管理文件资源
with open("input.txt", "r") as input_file, open("output.txt", "w") as output_file:
    # 逐行读取输入文件
    for line in input_file:
        # 去除每行的换行符和前后空白,避免转整数时出错
        clean_line = line.strip()
        # 将字符串转换为整数
        number = int(clean_line)
        # 计算乘以2后的结果
        doubled_number = number * 2
        # 将结果转为字符串,加上换行符后写入输出文件
        output_file.write(f"{doubled_number}\n")

额外优化:处理异常情况

如果你的输入文件可能存在空行或非数字内容,可以添加异常处理让代码更健壮:

with open("input.txt", "r") as input_file, open("output.txt", "w") as output_file:
    # 记录行号,方便定位错误
    for line_index, line in enumerate(input_file, start=1):
        clean_line = line.strip()
        # 跳过空行
        if not clean_line:
            continue
        try:
            number = int(clean_line)
            doubled_number = number * 2
            output_file.write(f"{doubled_number}\n")
        except ValueError:
            print(f"警告:第{line_index}行的内容 '{clean_line}' 不是有效整数,已跳过")

验证结果

运行修正后的代码后,输出文件的内容会是每行一个乘以2后的数字,比如:

2
4
6
8
10
12
14
16
18
20

内容的提问来源于stack exchange,提问作者SpaceToon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:26:20