当前位置:首页 > JAVA基础
24. while (true) {
25. String inputStr =
scanner.next().trim().toUpperCase();
26. if (\
27. System.out.println(\谢谢你的尝试,再见!\
28. break; 29. } 30.
31. char[] input = inputStr.toCharArray(); 32. int[] result = check(chs, input); 33. if (result[0] == level) {
34. score = 100 * level - score * 10;
35. System.out.println(\恭喜你猜对了!你的得分是:\36. break; 37. } else {
38. System.out.println(\你猜对\result[1] + \个字符,其中\
39. + result[0] + \个字符的位置正确!(总次数=\,exit——退出)\40. score++; 41. } 42. } 43.
44. scanner.close(); 45. } 46.
47. public static void generate(char[] chs) { 48. 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' };
49. boolean[] flags = new boolean[letters.length]; 50. for (int i = 0; i < chs.length; i++) { 51. int index; 52. do {
53. index = RandomUtils.nextInt(letters.length); 54. } while (flags[index]); 55. chs[i] = letters[index]; 56. flags[index] = true; 57. } 58. } 59.
60. public static int[] check(char[] chs, char[] input) {
61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 隐藏
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; } } }
return result; } }
3 质数问题(选做)
3.1 问题
求某个范围内所有质数和质数的个数。用户输入2到某个范围的,系统输出这个范围内的所有质数和质数的个数, 质数是指只有1和它本身两个约数的数。控制台输出情况如图-38所示:
图-38
3.2 方案
系统使用双层for循环判断某个数是否为水质数,外层循环确保每个用户输入的范围内的数都判断到,代码如下所示:
1. for (int n = 2; n <= max; n++) {}
里层循环判断某个数是否为质数。判断数n是否为质数,让n除以2到n的平方根之间的每一个数,如果n能被2到n(n大于2)的平方根之间的 某个数整除,则说明n不是素数,否则n一定是素数。如果一个数不是素数,它一定能找到两个数化成乘积,如果其中一个大于平方根,那么必定能找到一个小于平 方根的数和它成对,例如81的平方根是9,那只需要从2试到9就可以了,因为超过平方根的结果会比平方根小。代码如下所示: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
int m = (int) Math.sqrt(n); int i = 2;
for (; i <= m; i++) { if (n % i == 0) break; }
if (i > m) {
System.out.print(n + \ if (++numOfPrime % 10 == 0) System.out.println(); }
3.3 实现
系统代码实现如下: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
import java.util.Scanner; public class PrimeNumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); System.out.print(\请输入查找质数的范围:2~\ int max = scanner.nextInt(); scanner.close(); int numOfPrime = 0;
for (int n = 2; n <= max; n++) { // 判断n是否是质数
int m = (int) Math.sqrt(n); int i = 2;
for (; i <= m; i++) { if (n % i == 0) break; }
if (i > m) {
System.out.print(n + \ if (++numOfPrime % 10 == 0)
20. 21. 22. 23. 24. 25. 隐藏
System.out.println(); } }
System.out.println(\共有\个质数\ } }
3.4 扩展
求两个整数的最大公约数。由用户输入2个正整数,系统求出这两个正整数的最大公约数,并输出。
注:最大公约数,指某几个整数共有因子中最大的一个。 如果一个数既是数A的约数,又是数B的约数,称为A,B的公约数;而A,B的公约数中最大的一个(可以包括AB自身)称为AB的最大公约数。 系统交互过程如图-39所示:
图-39
系统代码实现如下: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
import java.util.Scanner; public class CommonDivisor {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); System.out.println(\请输入第一个整数:\ int first = scanner.nextInt();
System.out.println(\请输入第二个整数:\ int second = scanner.nextInt(); scanner.close();
// 从两个整数中较小的数开始
int start = first > second ? second : first;
共分享92篇相关文档