熟悉 Java 语法

OOP h02

0x00 问题描述及解决方法

计算圆的面积

Java 默认的浮点数类型为 double,所以声明 float 类型时需要后加 f

1
2
3
4
5
6
public static float calcArea(float radius) {
/**可修改代码开始,以下部分代码存在错误,请修正***/
float pi=3.14f;
return pi*radius*radius;
/**可修正代码结束****/
}

计算 a+ a+1 + ... b 的和

注意整型数字相加可能会产生溢出,且此方法的返回值类型为 double

1
2
3
4
5
6
7
8
9
public static double getSum(int a,int b  ) {
/**可修改代码开始,以下部分代码存在错误,请修正***/
double sum=0;
for(int i=a;i<=b;i++) {
sum=sum+i;
}
return sum;
/**可修正代码结束****/
}

判断 a, b ,c 是否能够构成三角形的三个边

三角形两边之和大于第三边。

1
2
3
4
public static boolean isTriangle(int a,int b,int c) {
//完成本函数里面的代码
return a + b > c && a + c > b && b + c > a;
}

判断两个浮点数是否相等,一般认为如果两个浮点数的差值小于 0.0001,即认为相等

根据提示,注意绝对值。

1
2
3
4
public static boolean isEq(float f1, float f2) {
//完成本函数里面的代码
return Math.abs(f1 - f2) < 0.0001;
}

将学生百分之成绩变换为 A(>= 90,B >= 80 且非 A,C >= 70 且非 B,D >= 60 且非 C,E 其他)

if 判断。

1
2
3
4
5
6
7
8
9
10
11
12
13
public static char getGrade(int score) {
//完成本函数里面的代码
if (score >= 90)
return 'A';
else if (score >= 80)
return 'B';
else if (score >= 70)
return 'C';
else if (score >= 60)
return 'D';
else
return 'E';
}

判断一个数字是否是质数,如果是质数返回 true,否则 false

2 到其算术平方根之间,判断是否有除 1 和自身外的因子。

1
2
3
4
5
6
7
8
9
10
11
12
13
public static boolean isPrime(int i) {
// 完成本函数里面的代码
int j;
boolean flag = true;
if (i < 2)
return false;
for (j = 2; j < Math.sqrt(i); j++)
if (i % j == 0) {
flag = false;
break;
}
return flag;
}

返回大于等于 i,且小于等于 j 的所有的偶数的加和

如题。

1
2
3
4
5
6
7
8
9
public static int getEvenSum(int i,int j) {
// 完成本函数里面的代码
int sum = 0;
if (i % 2 != 0)
i++;
for (; i <= j; i += 2)
sum += i;
return sum;
}

返回 i, j, k 中的最大值

两两取最大值。

1
2
3
4
5
6
public static int getMax(int i,int j,int k) {
// 完成本函数里面的代码
int max = Math.max(i, j);
max = Math.max(max, k);
return max;
}

0x01 总结

完整代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
/**
*
*/
package com.huawei.classroom.student.h02;

/**
*
*
* @author super
*
*/
public class Home02 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
if(Math.abs(calcArea(1)-3.14)<0.1) {
System.out.println(" calcArea pass!");
}
if(Math.abs((getSum(1,100)-5050)/5050)<0.1) {
System.out.println(" getSum pass!");
}
if(isTriangle(1,1,1)) {
System.out.println(" isTriangle pass!");
}
if(isEq(0.1f,0.10000000001f)) {
System.out.println(" isEq pass!");
}
if(getGrade(84)=='B') {
System.out.println(" getGrade pass!");
}
if(isPrime(13) ) {
System.out.println(" isPrime pass!");
}
if(getEvenSum(0,4)==6 ) {
System.out.println(" getEvenSum pass!");
}
if(getMax(1,-1,8)==8 ) {
System.out.println(" getMax pass!");
}

}

/**
* 修改代码
* 计算圆的面积
* 难度系数1星
* @param radius
* @return
*/
public static float calcArea(float radius) {
/**可修改代码开始,以下部分代码存在错误,请修正***/
float pi=3.14f;
return pi*radius*radius;
/**可修正代码结束****/
}


/**
* 修改代码
* 计算a+ a+1 + .... b的和
* 难度系数1星
* @return
*/
public static double getSum(int a,int b ) {
/**可修改代码开始,以下部分代码存在错误,请修正***/
double sum=0;
for(int i=a;i<=b;i++) {
sum=sum+i;
}
return sum;
/**可修正代码结束****/
}

/**
* 完成代码
* 判断a,b,c是否能够构成三角形的三个边
* 难度系数1星
* @param a
* @param b
* @param c
* @return
*/

public static boolean isTriangle(int a,int b,int c) {
//完成本函数里面的代码
return a + b > c && a + c > b && b + c > a;
}

/**
* 完成代码
* 判断两个浮点数是否相等,一般认为如果两个浮点数的差值小于0.0001,即认为相等
* 难度系数1星
* @param f1
* @param f2
* @return
*/
public static boolean isEq(float f1, float f2) {
//完成本函数里面的代码
return Math.abs(f1 - f2) < 0.0001;
}
/**
* 完成代码
* 将学生百分之成绩变换为A(>=90,B>=80且非A,C>=70且非B,D>=60且非C,E 其他)
* 难度系数1星
* @param score
* @return
*/
public static char getGrade(int score) {
//完成本函数里面的代码
if (score >= 90)
return 'A';
else if (score >= 80)
return 'B';
else if (score >= 70)
return 'C';
else if (score >= 60)
return 'D';
else
return 'E';
}
/**
* 完成代码
* 判断一个数字是否是质数,如果是质数返回true,否则false
* 难度系数1星
* @param i
* @return
*/
public static boolean isPrime(int i) {
// 完成本函数里面的代码
int j;
boolean flag = true;
if (i < 2)
return false;
for (j = 2; j < Math.sqrt(i); j++)
if (i % j == 0) {
flag = false;
break;
}
return flag;
}



/**
* 完成代码
* 返回大于等于i,且小于等于j的所有的偶数的加和
* 难度系数1星
* @param i
* @param j
* @return
*/
public static int getEvenSum(int i,int j) {
// 完成本函数里面的代码
int sum = 0;
if (i % 2 != 0)
i++;
for (; i <= j; i += 2)
sum += i;
return sum;
}

/**
* 完成代码
* 返回i,j,k中的最大值
* 难度系数1星
* @param i
* @param j
* @param k
* @return
*/
public static int getMax(int i,int j,int k) {
// 完成本函数里面的代码
int max = Math.max(i, j);
max = Math.max(max, k);
return max;
}


}