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
相关产品推荐
相关产品推荐

