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; }
|
注意整型数字相加可能会产生溢出,且此方法的返回值类型为 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; }
|
三角形两边之和大于第三边。
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; }
|
两两取最大值。
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;
public class Home02 {
public static void main(String[] args) { 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!"); }
}
public static float calcArea(float radius) { float pi=3.14f; return pi*radius*radius; }
public static double getSum(int a,int b ) { double sum=0; for(int i=a;i<=b;i++) { sum=sum+i; } return sum; }
public static boolean isTriangle(int a,int b,int c) { return a + b > c && a + c > b && b + c > a; }
public static boolean isEq(float f1, float f2) { return Math.abs(f1 - f2) < 0.0001; }
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'; }
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; }
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; }
public static int getMax(int i,int j,int k) { int max = Math.max(i, j); max = Math.max(max, k); return max; }
}
|