当前位置:首页 > JAVA基础
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;
共分享92篇相关文档