四舍五入问题,来人看看

一个在线的网页编程题:

从控制台读取 2 个文件名。

第一个文件包含实数(小数),由空格分隔。例如,3.1415。

将数字四舍五入到整数并将其写入第二个文件,由空格分隔这些数字。
关闭流。

四舍五入工作原理举例如下:

3.49 => 3

3.50 => 4

3.51 => 4

-3.49 => -3

-3.50 => -3

-3.51 => -4

要求:

程序应两次从控制台读取文件名。

为第一个文件创建输入流。为第二个文件创建输出流。

从第一个文件读取数字,四舍五入,然后将其写入第二个文件,这些数字由空格分隔。

必须按任务中的指示执行四舍五入。

必须关闭文件流。


/*
数字四舍五入
*/
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Solution {
    public static void main(String[] args)throws Exception {
        Scanner sc = new Scanner(System.in);
        String name1 = sc.nextLine();
        String name2 = sc.nextLine();
        FileInputStream file = new FileInputStream(name1);
        FileOutputStream file2 = new FileOutputStream(name2);

        while(file.available() > 0){
            double d = file.read();
            file2.write((int) Math.round(d));
        }
        file.close();
        file2.close();

    }
}

我的程序如上,但没办法达到:

从第一个文件读取数字,四舍五入,然后将其写入第二个文件,这些数字由空格分隔。

必须按任务中的指示执行四舍五入。

有人又没帮我看看要咋改正。

可以用 readLine().split(' ') 读取到 String[]
再遍历

file.read()读取的是字节,对字节进行操作没法达到你的要求
用reader和writer读取整行字符串进行操作
reader读取
再用wirter以字符串的形式写入

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
/*

  • 数字四舍五入 */ import java.util.Scanner;

public class Test11 {
public static void main(String[] args) throws Exception {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
String name1 = sc.nextLine();
String name2 = sc.nextLine();
FileReader fr = new FileReader(name1);
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(new FileWriter(name2));
String value = null;
while ((value = br.readLine()) != null) {
String vs[] = value.split(" ");
for (String v : vs) {
bw.write(String.valueOf(Math.round(Double.valueOf(v))) + " ");
}
}
br.close();
bw.close();

}

}