timi先生 2020-08-22 21:11 采纳率: 50%
浏览 110

四舍五入问题,来人看看

一个在线的网页编程题:

从控制台读取 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();

    }
}

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

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

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

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

  • 写回答

3条回答 默认 最新

  • threenewbee 2020-08-23 07:15
    关注

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

    评论
  • 封印di恶魔 2020-08-24 10:39
    关注

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

    评论
  • sanshizhang 2020-08-25 10:41
    关注

    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();

    }
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 关于网上一个easyx制作的见缝插针小游戏(c++)
  • ¥15 开地址法双散列函数处理碰撞
  • ¥15 想问一下这个是什么情况 虚拟机Linux打不开了
  • ¥15 联通光猫掉注册了怎么重新注册上去
  • ¥15 关于unity开发steamvr程序遇到的问题
  • ¥60 求tc downloader的下载方式
  • ¥15 华为 快捷方式 手电筒 接口
  • ¥15 Qt6.5支不支持Android13开发啊
  • ¥20 网络只能跑一半,应该如何设置
  • ¥20 Python调用百度开发者平台人脸识别接口