前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaSE:第十七章:编程测试题

JavaSE:第十七章:编程测试题

作者头像
Java廖志伟
发布2022-08-01 15:54:43
1630
发布2022-08-01 15:54:43
举报
文章被收录于专栏:高级开发进阶

**练习:求1+2!+3!+...+20!的和**

long sum = 0; for (int i = 1; i <= 20; i++) { long temp= 1; for (int j = 1; j <= i; j++) { temp *= j; } sum += temp; } System.out.println(sum); 结果为:2561327494111820313

**练习:获取字串中各个的字符数量**

public static void main(String[] args) { String string = "中国,国国哥,好帅是个大帅,哥哥"; HashMap<Character, Integer> hashMap = new HashMap<>(); while(string.length()>0) { Character c = string.charAt(0); string = string.substring(1); Integer integer = hashMap.get(c); if(integer == null ) { hashMap.put(c, 1); }else { hashMap.put(c, integer + 1); } } Set<Entry<Character, Integer>> entrySet = hashMap.entrySet(); for (Entry<Character, Integer> entry : entrySet) { System.out.println(entry); } } 结果:

哥=3 帅=2 大=1 个=1 ,=3 中=1 国=3 好=1 是=1 **练习:消除集合中重复的元素**

public static void main(String[] args) { List list = Arrays.asList(1,2,3,3,4,4,5,5,6,1,9,3,25,4); HashSet<Integer> hashSet = new HashSet<>(); hashSet.addAll(list); for (Integer integer : hashSet) { System.out.println(integer); } } 结果:

1 2 3 4 5 6 9 25 **练习:找出数组中的一个值,使其左侧值的和等于右侧值的加和,例如:1,2,5,3,2,4,2,结果为第四个值。**

public static void main(String[] args) { int[] arr = new int[] {1,2,5,3,2,4,2};//1,2,5,3,2,4,2,9,2,1,7,6,3 int targetIndex=0; for (int i = 0; i < arr.length; i++) { int leftSum=0; int rightSum=0; for (int j = 0; j < targetIndex; j++) { leftSum += arr[j]; } for (int j = targetIndex+1; j < arr.length; j++) { rightSum+=arr[j]; } if(leftSum == rightSum) { break; } targetIndex++; } if(targetIndex == arr.length) { System.out.println("未找到这样的数值"); }else { System.out.println("目标下标:" + targetIndex + "对应的值:" + arr[targetIndex]); } } 结果为:目标下标:3对应的值:3

**练习:** 请编写一个 Application 实现如下功能:从控制台给出的一个字母串,然后判断该串的第一个字母是否为大写,若是大写则统计该串中大写字母的个数,并将所有大写字母输出;否则输出信息串”第一个字母不是大写字母!”。

Scanner scanner = new Scanner(System.in); System.out.println("请输入一个字符串:"); String string = scanner.next(); char first = string.charAt(0); int intf = (int)first; System.out.println("第一个字母大小为:" + intf); if(intf >= 65 && intf <= 90) { int count = 0; for (int i = 0; i < string.length(); i++) { char charAt = string.charAt(i); int intChar = (int)charAt; if(intChar >= 65 && intChar <= 90) { count++; System.out.print(charAt + " "); } } System.out.println(count); }else { System.out.println("第一个字母不是大写字母!"); } 运行结果: 请输入一个字符串:

ABCabcdBC 第一个字母大小为:65 A B C B C 5

**练习:** 一个应用程序,接受用户输入的一行字符串,统计字符个数,然后反序输出。

Scanner scanner = new Scanner(System.in); System.out.println("请输入字符串:"); String string = scanner.next(); String back; int index= string.length() - 1;//4-1=3 char[] charArray = new char[index + 1]; for (int i = 0; i < string.length(); i++) { char charAt = string.charAt(i); charArray[index - i] = charAt; } //3 0123 String string2 = new String(charArray); System.out.println("字符个数为:" + string.length() + "," + string2);

运行结果:

请输入字符串: sddfgghhj 字符个数为:9,jhhggfdds **练习:** 实现这两个字符串的拼接

Scanner scanner = new Scanner(System.in); System.out.println("请输入字符串:"); String next1 = scanner.next(); System.out.println("请输入再次输入字符串:"); String next2 = scanner.next(); String concat = next1.concat(next2); System.out.println(concat); 运行结果:

请输入字符串: fdsaf 请输入再次输入字符串: dsfaaf fdsafdsfaaf

**练习:写一个冒泡排序** 排序思想: 相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其它的数进行类似操作。

简单来说: 拿从小到大排序:拿二个数来比大小,大的数拿出来,继续跟后面的数比较大小,继续拿大的数出来这样循环,最后一个数反正是最大的。下一次循环操作类似。

案例: int[] array = {11,5,9,7,3,2}; 最开始数组:11 5 9 7 3 2 11比5大,拿11:5 11 9 7 3 2 11比9大,拿11:5 9 11 7 3 2 11比7大,拿11:5 9 7 11 3 2 ... 比完第一轮后: 5 9 7 3 2 11 代码参考:

int[] array = {11,5,9,7,3,2}; for (int i = 1; i < array.length; i++) { if(array[i-1] > array[i]) { int temp; temp = array[i-1]; array[i-1] = array[i]; array[i] = temp; } } for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); }

已经确定11为最大的数,就不拿11继续比较了 现在要比较的数组:5 9 7 3 2 和第一轮一样 拿5和9比,9大,拿9:5 9 7 3 2 拿9和7比,9大,拿9:5 7 9 3 2 ... 第二轮比较:5,7,3,2,9 第三轮比较:5,3,2,7 第四轮比较:3,2,5 ... 我们可以发现比较的数的形状有点像: 。。。。。。 。。。。。 。。。。 。。。 。。 。 实现代码:

int[] array = {11,5,9,7,3,2}; for (int i = 0; i < array.length; i++) { for (int j = 0; j < array.length - i; j++) { System.out.print("。"); } System.out.println(); } 发现内外循环可以使用上面的操作了,我们可以继续对俩个数进行换位置操作。之前我们学过二个数换位置,所以附上代码:

if(小的数变量 > 大的数变量) { int 临时变量; 临时变量= 小的数变量; 小的数变量 = 大的数变量; 大的数变量= 临时变量; }

放到数组中

if(array[j-1] > array[j]) { int temp; temp = array[j-1]; array[j-1] = array[j]; array[j] = temp; } 最终代码:

int[] array = {11,5,9,7,3,2}; for (int i = 1; i <= array.length; i++) { for (int j = 1; j <= array.length - i; j++) { if(array[j-1] > array[j]) { int temp; temp = array[j-1]; array[j-1] = array[j]; array[j] = temp; } } } for (int i = 0; i < array.length; i++) { System.out.print(array[i]); } 好了冒泡排序完成

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档