第一阶段模块三作业

  1. 编程题

编程统计字符串"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]);
        }

    }
}

  1. 编程题

准备一个 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. 编程题

使用集合实现斗地主游戏的部分功能,要求如下:

(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();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值