[Java] 实验8
[Java] 实验7參考代码,代码已更新。感兴趣的同学能够去学习。
1. default package问题可參考实验6
2. for, if, while等。后面包括多条语句时,须要用花括号括起来
3. 为什么须要close scanner, 可參考实验6 (已简要更新原因)
40035 输出某月的天数
1. 较简便的switch-case的写法
switch(month) { case 1: case 3: // Output 31 when month equals 1 or 3 System.out.println(31); break; case 2: // todo. Note that you can use "if" statement in "case" case 4: case 6: // ... }
We have the coding principle: DRY (Do not repeat yourself.)
2. 闰年的定义
满足例如以下条件中,随意一条。即为闰年。考虑年份n,
- 若n能被4整除。但不能被100整除
- 若n能被400整除
3. 本地执行正确,提交“答案错误”的同学,能够考察例如以下case:
year = 1900, month = 2
year = 2000, month = 2
...
大家要自己设计一些case, 去验证“特殊情况”、“边际条件”等。
40037 计算不及格的人数
1. 程序怎样停止,请类比40008. 求奇数和那题。
更新:该题代码已在实验6 參考代码中给出。
2. 在第二行输出结果错误(平均分输出73.75, 或者不及格人数输出3)的同学,能够參考实验六“求1+1/2+1/3+……+1/n”那题,第3点。
通俗版代码:(我还没有原题相应的程序。待补充)
进阶代码:
import java.util.Scanner; public class GradeStatistics { public static void main(String[] args) { Scanner in = new Scanner(System.in); int repeat = in.nextInt(); while (repeat-- != 0) { double gradeTot = 0; // gradeTotal, the sum of the input grades int gradeCnt = 0; // gradeCount, the number of the input grades int failCnt = 0; // failCount, the number of the grades, which is < 60 for (int grade = in.nextInt(); grade >= 0; grade = in.nextInt()) { gradeTot += grade; ++ gradeCnt; failCnt += grade < 60?1: 0; } double average = gradeTot / gradeCnt; System.out.println("average=" + Math.round(average * 100) / 100d); System.out.println("count=" + failCnt); } } }
50001
要编写函数fact, 注意到,函数主要由:返回值、函数名、參数列表、函数体组成。
不理解的同学能够自行查阅參考书。
50002
这题要求定义的函数fn, 它的參数列表是要填写两个參数的。