第1关:学习-Java顺序结构之数学函数之求两数最大者
任务描述
本关任务:获取键盘两次输入的值,输入两者中的最大数。
相关知识
Java 的 Math 类中提供了的方法可以很方便的实现本关任务。
下面我们来介绍几个 Math 类中常用的方法。 #####Math 类
Java 的 Math 包含了用于执行基本数学运算的属性和方法,如平方、对数、平方根和三角函数等。下表为 Math 类的一些常用方法。
方法 | 描述 |
abs(x) | 返回参数x的绝对值,不改变x的数据类型 |
sqrt(x) | 计算x的平方根,返回值为 double |
cbrt(x) | 计算x的立方根,返回值为 double |
floor(x) | 返回小于x的最大整数,返回类型为 double |
ceil(x) | 返回大于等于x的的最小整数,返回类型为 double |
round(x) | 将x四舍五入取整,返回值为 long |
pow(x,y) | 计算x的y次方,返回类型为 double |
max(x,y) | 计算x和y的最大值,返回类型为 double |
min(x,y) | 计算x和y的最小值,返回类型为 double |
sin(x) | 求x的正弦值 |
cos(x) | 求x的余弦值 |
tan(x) | 求x的正切值 |
asin(x) | 求x的反正弦值 |
acos(x) | 求x的反余弦值 |
atan(x) | 求x的发正切值 |
toDegrees(x) | 将x转化为角度 |
toRadians(x) | 将x转换为弧度 |
PI | π |
接下来为大家详细介绍该类的一些常用方法。
立方根
在之前的实训中我们知道了求平方根的方法,现在我们来讲解求立方根的方法。
例子:求 327 的值。
Math.cbrt(x)
可以求取立方根的结果,x 既可以是整型也可以是浮点型。
1. int a = 27;
2. double cbrt = Math.cbrt(a);
3. System.out.print(cbrt);
执行结果:
3.0
绝对值
例子:求 ∣−3.5∣ 的值。
Math.abs(x)
可以求取 x 的绝对值,x 既可以是整型也可以是浮点型。
1. double a = -3.5;
2. double abs = Math.abs(a);
3. System.out.print(abs);
执行结果:
3.5
取整
Math.ceil(x)
、Math.floor(x)
和Math.round(x)
都可以求取 x 的整数,x 既可以是整型也可以是浮点型,不过它们取整的方式不同。
Math.ceil(x)
返回大于等于给定参数的的最小整数。
1. double a = 3.8;
2. double b = 3.1;
3. double ceil1 = Math.ceil(a);
4. double ceil2 = Math.ceil(b);
5. System.out.println(ceil1);
6. System.out.print(ceil2);
执行结果:
4.0
4.0
Math.floor(x)
返回小于目标函数的最大整数。
1. double a = 3.8;
2. double b = 3.1;
3. double floor1 = Math.floor(a);
4. double floor2 = Math.floor(b);
5. System.out.println(floor1);
6. System.out.print(floor2);
执行结果:
3.0
3.0
Math.round(x)
四舍五入取整。
1. double a = 3.8;
2. double b = 3.1;
3. long round1 = Math.round(a);
4. long round2 = Math.round(b);
5. System.out.println(round1);
6. System.out.print(round2);
执行结果:
4
3
比较大小
Math.max(x,y)
、Math.min(x,y)
都可以比较 x 和 y 的大小,x、y 既可以是整型也可以是浮点型,不过它们一个返回最大值,一个返回最小值。
1. double a = 3.8;
2. double b = 3.1;
3. double max = Math.max(a,b);
4. double min = Math.min(a,b);
5. System.out.println(max);
6. System.out.print(min);
执行结果:
3.8
3.1
三角函数
例子:
1. double a = 30;// 定义一个变量a,用来表示角度为30°
2. // Math.toRadians可以将角度转化为弧度。也就是将30度转化为π/6。
3. double b = Math.toRadians(a);// 定义一个变量b,用来表示弧度。
4. // Math.sin 可以算出该弧度对应的正弦值。
5. double sin = Math.sin(b)
6. System.out.print(sin);
执行结果:0.49999999999999994
然而结果并不是我们所熟知的 0.5,这是为什么呢?
// 输出 Math 类中π的值
System.out.print(Math.PI);
执行结果:3.141592653589793
可以看出 Math 类中 π 的值是精简后的,而前面的30°转化为6π的值也会有所不同,所以得出的结果有误差。
那根据正弦值又怎么得出它的角度呢?
1. // Math.asin可以将正弦值转化为反正弦值,这里的 sin 采用上面这个例子求出的sin值。
2. double asin = Math.asin(sin);
3. // Math.toDegrees可以将其转化为角度
4. double d=Math.toDegrees(asin);
5. System.out.println(d);
执行结果:29.999999999999996
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。
注意:给定的两个数都为 double 类型。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。
开始你的任务吧,祝你成功!
源代码:
/**
* 任务:获取键盘两次输入的值,输出两者中的最大数。
* 类名为:CompareMax
*/
import java.util.Scanner;
public class CompareMax {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
// 第一步:获取键盘第一次输入的值
double a=reader.nextDouble();
// 第二步:获取键盘第二次输入的值
double b=reader.nextDouble();
// 第三步:比较两数大小
double d=Math.max(a,b);
// 第四步:不换行输出最大的那个值
System.out.print(d);
/********** End **********/
}
}