JAVA基础 联系客服

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

3. 4. 5. 6. 7. 8. do {

index = RandomUtils.nextInt(letters.length); } while (flags[index]); chs[i] = letters[index]; flags[index] = true; }

然后,提示用户录入5个字符后,并转换为字符数组,代码如下: 1. 2.

String inputStr = scanner.next().trim().toUpperCase(); char[] input = inputStr.toCharArray();

判断用户的录入的正确性(需要同时判断字符和位置的正确性),代码如下: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.

int[] result = new int[2];

// result[0]: 存储正确的位置个数 // result[1]: 存储正确的字符个数

for (int i = 0; i < input.length; i++) { for (int j = 0; j < chs.length; j++) { if (input[i] == chs[j]) { result[1]++; if (i == j) { result[0]++; }

break; } } }

判断完毕后,需要输出提示信息到界面,并需要计算分数。如果5个字符的位置均正确,则表示游戏结束,计算并输出用户的得分;否则,将猜测的次数累加1 ,并提示用户所猜对的字符个数以及位置个数,游戏继续。代码如下: 1. 2. 3.

if (result[0] == level) {

score = 100 * level - score * 10;

System.out.println(\恭喜你猜对了!你的得分是:\4. break; 5. } else { 6. score++;

7. System.out.println(\你猜对\个字符,其中\result[0] + \个字符的位置正确!(总次数=\+ score + \,exit——退出)\8. }

2.3 实现

系统代码实现如下: 1. 2. 3. 4. 5. 6. 7. 8.

import java.util.Arrays; import java.util.Scanner;

import org.apache.commons.lang.math.RandomUtils;

public class GuessingGame {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println(\欢迎尝试猜字母游戏!\9.

10. int level = 5; 11. int score = 0;

12. char[] chs = new char[level]; 13. //产生5个长度的字符数组 14. generate(chs);

15. System.out.println(\游戏开始,请输入你所猜的5个字母序列:(exit——退出)\16. while (true) {

17. String inputStr =

scanner.next().trim().toUpperCase();

18. if (\

19. System.out.println(\谢谢你的尝试,再见!\

20. break; 21. }

22. //比较

23. char[] input = inputStr.toCharArray(); 24. int[] result = check(chs, input); 25. if (result[0] == level) {

26. score = 100 * level - score * 10;

27. System.out.println(\恭喜你猜对了!你的得分是:\28. break; 29. } else {

30. System.out.println(\你猜对\result[1] + \个字符,其中\个字符的位置正确!(总次数=\,exit——退出)\31. score++; 32. }

33. } 34.

35. scanner.close(); 36. } 37.

38. public static void generate(char[] chs) { 39. char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };

40. boolean[] flags = new boolean[letters.length]; 41. for (int i = 0; i < chs.length; i++) { 42. int index; 43. do {

44. index = RandomUtils.nextInt(letters.length); 45. } while (flags[index]); 46. chs[i] = letters[index]; 47. flags[index] = true; 48. } 49. } 50.

51. public static int[] check(char[] chs, char[] input) { 52. int[] result = new int[2];

53. // result[0]: 54. // result[1]: 55. for (int i = 0; i < input.length; i++) { 56. for (int j = 0; j < chs.length; j++) { 57. if (input[i] == chs[j]) { 58. result[1]++; 59. if (i == j) { 60. result[0]++; 61. }

62. break; 63. } 64. } 65. }

66. return result; 67. } 68. } 隐藏

2.4 扩展

存储正确的位置个数 存储正确的字符个数

为猜字母游戏添加游戏等级。游戏等级设为3等:5、7和9,代表所需要猜测的字母个数。游戏开始时,由用户选择游戏等级(5,7,9)。如 果选择9,则会随机产生9个字符,然后用户输入一个字符串包含9个字符,看这9个字符和随机产生的9个字符比较,看是否正确,并统计分数。系统交互情况如 图-49所示:

图-49

系统代码实现如下: 1. 2. 3. 4. 5. 6. 7. 8.

import java.util.Arrays; import java.util.Scanner;

import org.apache.commons.lang.math.RandomUtils;

public class GuessingGame {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println(\欢迎尝试猜字母游戏!\

9. String levelStr; 10. do {

11. System.out.print(\请输入游戏级别(5、7、9)?\

12. levelStr = scanner.next().trim();

13. } while (!\&& !\14. && !\15.

16. int level = Integer.parseInt(levelStr); 17.

18. int score = 0; 19.

20. char[] chs = new char[level]; 21. generate(chs);

22. System.out.println(\游戏开始,请输入你所猜的\

23. + \个字母序列:(exit——退出)\