JAVA基础 联系客服

发布时间 : 星期三 文章JAVA基础更新完毕开始阅读22a2e87f4a7302768e9939c2

Java语言基础 Day04

Top

1. 水仙花数问题 2. 猜字母游戏

3. 质数问题(选做)

4. 随机加法运算器(选做) 5. 成绩统计程序 6. 费氏数列问题

1 水仙花数问题

1.1 问题

计算某个范围内所有水仙花数。用户输入0到某个范围的数,系统输出这个范围内的所有水仙花数,水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。系统交互情况如图-36所示:

图-36

1.2 方案

系统使用双层for循环判断某个数是否为水仙花数,外层循环确保每个用户输入的范围内的数都判断到,里层循环判断某个数是否为水仙花 数,m取到个位数,例如:int m=153,经过int v=m计算后v=3;m /= 10去除各位数,例如:int m=153,经过m /= 10计算后m=15。代码如下所示: 1. 2. 3. 4. 5. 6.

for (int n = 1; n <= max; n++) { // 判断n是否为水仙花数 int sum = 0;

for (int m = n; m > 0; m /= 10) { int v = m % 10; sum += v * v * v;

7. 8. 9. } }

如果n和sum相等,那么说明n是水仙花数。代码如下所示: 1. 2. 3.

if (n == sum) {

System.out.print(n + \}

1.3 实现

系统代码实现如下: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 隐藏

import java.util.Scanner; public class Daffodils {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.print(\请输入查找水仙花的范围:0~\ int max = scanner.nextInt(); scanner.close();

for (int n = 1; n <= max; n++) { // 判断n是否为水仙花数 int sum = 0;

for (int m = n; m > 0; m /= 10) { int v = m % 10; sum += v * v * v; }

if (n == sum) {

System.out.print(n + \ } } } }

1.4 扩展(选做)

计算“百钱买百鸡”的问题。

百钱买百鸡:公鸡5文钱一只,母鸡3文钱一只,小鸡1文钱3只,如何用百文钱买百只鸡?

系统交互情况如图-37所示:

图-37

1. public class DaffodilsExt {

2. public static void main(String[] args) { 3. int cock, hen, chick;

4. System.out.println(\百钱买百鸡的方案如下:\5. for (cock = 0; cock <= 20; cock++) { 6. for (hen = 0; hen <= 33; hen++) { 7. chick = 100 - cock - hen; 8. if (chick % 3 == 0) {

9. int total = cock * 5 + hen * 3 + chick / 3; 10. if (total == 100) {

11. System.out.println(\公鸡:\+ cock + \母鸡:\

12. + hen + \小鸡:\13. } 14. } 15. } 16. } 17. } 18. } 隐藏

2 猜字母游戏

2.1 问题

猜字母游戏。系统随机产生5个按照一定顺序排列的字符,然后由用户输入一个5个字符的字符串,由程序判断这五个字符和系统所产生的5个字符 是否相同(字母和位置均相同)。如果相同,则程序结束,并计算得分;如果不相同,则输出比较结果以提示用户继续游戏。系统交互情况如图-48所示:

图-48

由图-48可以看出,程序每次比较用户所录入的字符时,会提示5个字符中正确的字符个数,以及位置正确的个数作为提示,以便于用户判断。

游戏的得分规则为:字符的个数乘以100为总分,即此游戏的总分为 500 分。用户如果第一次就猜对,则得满分(500分);每多猜测一次,则扣10分。

2.2 方案

定义一个 5 个长度的字符数组用于存储系统所产生的5个字符,并定义变量记载用户所猜测的次数。代码如下: 1. 2. 3.

int level = 5;

char[] chs = new char[level]; int score = 0;

定义一个数组letters存放所有字符,定义一个boolean类型的数组大小和letters数组大小相同,用来标识letters数组中的元素是否被选中,代码如下: 1.

char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',

'J',

2. 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',

3. 'W', 'X', 'Y', 'Z' };

4. boolean[] flags = new boolean[letters.length];

根据所需要产生的字符个数(5个)随机产生字符数组,且字符不能重复。代码如下: 1. 2.

for (int i = 0; i < chs.length; i++) { int index;