华为机试-HJ7 取近似值

115 阅读1分钟

题目

image.png

www.nowcoder.com/practice/3a…

我的题解

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String str;
        while ((str = bf.readLine()) != null) {
            String[] arr = str.split("\\.");
            String num = arr[1].substring(0, 1);
            if (Integer.parseUnsignedInt(num) >= 5) {
                System.out.println(Integer.parseUnsignedInt(arr[0]) + 1);
            } else {
                System.out.println(Integer.parseUnsignedInt(arr[0]));
            }

        }
    }
}

image.png

总结:

1、 String[] arr = str.split("\\."); 第一次编译没过就是因为正则没写对

参考题解

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String str;
        while ((str = bf.readLine()) != null) {
            double number = Double.parseDouble(str);
            System.out.println((int)(number + 0.5));
        }
    }
}

image.png

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String str;
        while ((str = bf.readLine()) != null) {
            float number = Float.parseFloat(str);
            System.out.println((int)(number + 0.5));
        }
    }
}

image.png

总结:

1、类型转换就是向下取整、很巧妙的利用这种方式

            double number = Double.parseDouble(str);
            System.out.println((int)(number + 0.5));
            
            float number = Float.parseFloat(str); 
            System.out.println((int)(number + 0.5));

image.png