- 编程题
编程统计字符串"ABCD123!@#$%ab"中大写字母、小写字母、数字、其它字符的个数并打印出来。
package com.lagou.task15;
/**
* 编程统计字符串"ABCD123!@#$%ab"中大写字母、小写字母、数字、其它字符的个数并打印出来。
*/
public class StringTest {
public static void main(String[] args) {
// 定义一个长度为4的一维数组
int[] arr = new int[4];
String[] arr1 = new String[]{"大写字母","小写字母","数字","其他"};
// 字符串
String str = "ABCD123!@#$%ab";
// String字符串转换成char数组
char[] cArr = str.toCharArray();
// 遍历数组,通过判断条件进行计数添加到arr一维数组中去
for (int i = 0; i < cArr.length; i++){
if ('A' <= cArr[i] && cArr[i]<= 'Z'){
arr[0]++;
}else if ('a' <= cArr[i] && cArr[i]<= 'z'){
arr[1]++;
}else if ('0' <= cArr[i] && cArr[i]<= '9'){
arr[2]++;
}else {
arr[3]++;
}
}
for (int i = 0; i < arr.length;i++){
System.out.println(arr1[i] +"字符数量是:" + arr[i]);
}
}
}
- 编程题
准备一个 HashMap 集合,统计字符串"123,456,789,123,456"中每个数字字符串出现的次数并打印出来。
如:
123 出现了 2 次
456 出现了 2 次
789 出现了 1 次
package com.lagou.task15;
/**
* 准备一个 HashMap 集合,统计字符串"123,456,789,123,456"中每个数字字符串出现的次数并打印出来
*/
import java.util.HashMap;
public class HtTest {
public static void main(String[] args) {
// 定义字符串
String str = "123,456,789,123,456";
// 创建一个HashMap集合
HashMap<String,Integer> m1 = new HashMap<>();;
// 使用split以','进行分割
String[] split = str.split(",");
// 字符串作为key,字符串出现的次数作为value,判断是否存在字符串,如果不存在就添加key并value为1,如果有了 在把value加1
for (String str1: split) {
//System.out.println(str1);
if (!m1.containsKey(str1)){
m1.put(str1,1);
}else {
m1.put(str1,m1.get(str1) + 1);
}
}
// 打印键跟值
for (String key: m1.keySet()) {
System.out.println(key + "出现的次数为:" + m1.get(key));
}
}
}
- 编程题
使用集合实现斗地主游戏的部分功能,要求如下:
(1)首先准备 54 张扑克牌并打乱顺序。
(2)由三个玩家交替摸牌,每人 17 张扑克牌,最后三张留作底牌。
(3)查看三个玩家手中的扑克牌和底牌。
(4)其中玩家手中的扑克牌需要按照大小顺序打印,规则如下:
手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3
package com.lagou.task15;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
public class CardGame {
public static void main(String[] args) {
// 创建一个Map集合,存储牌的索引和组装好的牌
HashMap<Integer,String> mp = new HashMap();
// 创建一个List集合,存储牌的索引,也就是上边Map集合的Key值
List<Integer> lt = new ArrayList();
// 定义两个数组,number用来存储字面值,color用来存储牌的序号
String[] number = new String[]{"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
String[] color = new String[]{"♠", "♥", "♣", "♦"};
// 定义一个index作为编号
int index = 1;
for (String ts: number) {
for (String ts2: color) {
lt.add(index);
mp.put(index++,ts + ts2);
}
}
mp.put(53,"小王");
mp.put(54,"大王");
lt.add(53);
lt.add(54);
//System.out.println("组合牌为:\n" + mp);
//System.out.println("未洗牌:\n" + lt);
// 使用Collections.shuffle随机打乱洗牌
Collections.shuffle(lt);
System.out.println("====================开始洗牌====================\n====================洗牌结果====================\n" + lt);
// 定义4个list集合,分别代表三个玩家和底牌
List<Integer> lt1 = new ArrayList<Integer>(); // 代表玩家一
List<Integer> lt2 = new ArrayList<Integer>(); // 代表玩家二
List<Integer> lt3 = new ArrayList<Integer>(); // 代表玩家三
List<Integer> DIPai = new ArrayList<Integer>(); // 代表底牌
// 发牌采用集合索引%3
for (int i = 0; i < lt.size();i++){
if (i < 3){
DIPai.add(lt.get(i));
}else if (i % 3 == 0){
lt1.add(lt.get(i));
}else if (i % 3 == 1){
lt2.add(lt.get(i));
}else if (i % 3 == 2){
lt3.add(lt.get(i));
}
}
System.out.println("====================发牌结果是====================");
look("玩家一牌面", lt1,mp);
look("玩家二牌面", lt2,mp);
look("玩家三牌面", lt3,mp);
look("底牌", DIPai,mp);
//使用sort进行排序
System.out.println("====================每个人的牌排序====================");
Collections.sort(lt1);
Collections.sort(lt2);
Collections.sort(lt3);
Collections.sort(DIPai);
// 查看三个玩家手中的扑克牌和底牌
look("玩家一牌面", lt1,mp);
look("玩家二牌面", lt2,mp);
look("玩家三牌面", lt3,mp);
look("底牌", DIPai,mp);
}
public static void look(String name, List<Integer> ltt,HashMap<Integer,String> mp){
System.out.print(name + " ");
for (int i = ltt.size()-1;i>=0;i--){
Integer key = ltt.get(i);
String value = mp.get(key);
System.out.print(value + " ");
}
System.out.println();
}
}