Java 数组习题答案

42 篇文章 5 订阅

基础题目

第一题:需求实现

  • 模拟大乐透号码:

    • 一组大乐透号码由10个1-99之间的数字组成
    • 定义方法,打印大乐透号码信息
  • 代码实现,效果如图所示:
    在这里插入图片描述

  • 开发提示:

    • 使用数组保存录入的号码
  • 参考答案:

      public class Test1 {
          public static void main(String[] args) {
              int[] arr  = {10,20,30,40,50, 60,66,70,80,99};
              printNum(arr);
          }
      
          public static void printNum(int[] arr) {
              System.out.println("您的大乐透号码为:");
              for (int i = 0; i < arr.length; i++) {
                  System.out.print(arr[i]+" ");
              }
          }
      }
    

第二题:需求实现

  • 打印扑克牌.

  • 代码实现,效果如图所示:
    在这里插入图片描述

  • 开发提示:

    • 使用两个字符串数组,分别保存花色和点数

      public class Test2 {
          public static void main(String[] args) {
              // 花色数组
              String[] hs  = {"黑桃","红桃","梅花","方片"};
              // 点数数组
              String[] ds = {"A","2","3","4", "5","6","7","8","9","10","J","Q","K"};
              printCard(hs,ds);
          }
          public static void printCard(String[] hs ,String[] ds){
              for (int hs_index = 0; hs_index < hs.length; hs_index++) {
                  for (int ds_index = 0; ds_index < ds.length; ds_index++) {
                      // 拼接字符串
                      System.out.print(  hs[hs_index] + ds[ds_index]+" ");
                  }
                  // 输出换行
                  System.out.println();
              }
          }
      }
      

第三题:需求实现

  • 模拟在一副牌中,抽取第1张,第5张,第50张扑克牌。

  • 代码实现,效果如图所示:
    在这里插入图片描述

  • 参考答案:

      public class Test3 {
          public static void main(String[] args) {
              // 获取所有扑克牌
              String[] puke = getPuke();
      
              // 抽取指定的三种扑克牌
              int num1 = 1;
              int num2 = 5;
              int num3 = 50;
              String[] pk3 = get3(puke , num1 ,num2,num3);
              // 打印抽取的牌
              for (int i = 0; i < pk3.length; i++) {
                  System.out.print(pk3[i] + " ");
              }
          }
      
          private static String[] getPuke() {
      
              String[] colors={"黑色","红桃","梅花","方块"};
              String[] nums={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
      
              String[] puke = new String[54];
              int index = 0;
              for (int i = 0; i < colors.length; i++) {
                  for (int j = 0; j < nums.length; j++) {
                      puke[index] = colors[i]+nums[j];
                      index ++;
                  }
              }
              puke[52] = "小王";
              puke[53] = "大王";
      
              return puke;
      
          }
      
          public static String[] get3(String[] puke, int i, int i2, int i3) {
              String[] pk3 = new String[3];
              pk3[0] = puke[i - 1];
              pk3[1] = puke[i2 - 1];
              pk3[2] = puke[i3 - 1];
              return pk3;
          }
      }
    

第四题:需求实现

  • 统计字符
    • 字符数组:{‘a’,‘l’,‘f’,‘m’,‘f’,‘o’,‘b’,‘b’,‘s’,‘n’}
    • 定义printCount方法,统计每个字符出现的次数并打印到控制台。
  • 代码实现,部分效果如图所示:
    在这里插入图片描述
  • 开发提示:
    • 将数字强制转换,根据ASCII码表转换为字符。
    • 可以定义长度26的数组,每个元素,对应去保存每种字符的出现次数,比如0索引保存a的次数,1索引保存b的次数,以此类推。
  • 参考答案:
        public class Test4 {
            public static void main(String[] args) {
                //  获取长度100的字符数组
                char[] charArray = {'a','l','f','m','f','o','b','b','s','n'};
                //  统计字符数组中字母出现次数
                printCount(charArray);
            }
            public static void printCount(char[] charArray) {
                int[] count= new int[26];
                // 对应保存字母出现的次数
                for (int i = 0; i < charArray.length; i++) {
                    int c  = charArray[i];
                    count[c- 97]++;
                }
                // 打印字母和次数
                for (int i = 0, ch = 97; i < count.length; i++, ch++) {
                    if (count[i] != 0 ) {
                        System.out.println((char) ch + "--" + count[i]);
                    }
                }
            }
        }

第五题:需求实现

  • 统计高于平均分的分数有多少个。

    • 定义数组[95, 92, 75, 56, 98, 71, 80, 58, 91, 91]。
    • 定义getAvg方法,获取一个数组中的平均数
  • 代码实现,效果如图所示:
    在这里插入图片描述

  • 参考答案:

        public class Test5 {
            public static void main(String[] args) {
                // 获取随机分数
                int[] score = {95, 92, 75, 56, 98, 71, 80, 58, 91, 91};
                // 获取平均分
                int avg = getAvg(score);
                // 定义计数的变量
                int count = 0 ;
                for (int i = 0; i < score.length; i++) {
                    if (score[i] > avg){
                        count++;
                    }
                }
                System.out.println("高于平均分:"+avg+" 的 个数有" + count+" 个");
            }
            // 获取平均分的方法
            public static int getAvg(int[] arr) {
                int sum = 0;
                for (int i = 0; i < arr.length; i++) {
                    sum += arr[i];
                }
                return sum / arr.length;
            }  
        }

第六题:需求实现

  • 定义sym方法,判断数组中的元素值是否对称.
  • 代码实现,效果如图所示:
    在这里插入图片描述
  • 开发提示:
    • 数组中元素首尾比较。
  • 参考答案:
        public class Test6 {
            public static void main(String[] args) {
                int[] arr = {1,2,3,4,3,2,1};
                System.out.println(Arrays.toString(arr) +" 是否对称:" +sym(arr) );
      
                int[] arr2 = {1,2,3,4,5,2,1};
                System.out.println(Arrays.toString(arr2) +" 是否对称:" +sym(arr2) );
            }
      
            public static boolean sym(int[] arr) {
                /*
                start : 数组头
                end :数组尾 
                 */
                for (int start = 0 , end = arr.length -1 ; start <= end; start++, end--) {
                    // 如果两端一旦有元素不等,就返回false
                    if (arr[start] != arr[end]) {     
                        return false;
                    }
                }
                return true;
            }
        }
  
第七题:需求实现
  • 定义equals方法,比较数组内容是否完全一致。
  • 代码实现,效果如图所示:
    在这里插入图片描述
  • 开发提示:
    • 长度一致,内容一致,定义为完全一致。
  • 参考答案:
        public class Test7 {
            public static void main(String[] args) {
      
                int[] arr = {1,2,3,4,3,2,1};
                int[] arr2 = {1,2,3,4,3,2,1};
                System.out.println(" 是否一致:" +equals(arr ,arr2) );
      
            }
            //  比较数组的内容
            public static boolean equals(int[] arr1, int[] arr2) {
        	// 长度不同,返回false
                if (arr1.length != arr2.length) {
                    return false;
                }
        	
        	//
                for (int i = 0; i < arr1.length; i++) {
                    // arr1[i] 和 arr2[i]比较
                    /*
                     * 所有元素都相同才相同,也就是只要有一个不同,这两个数组就是不同
                     */
                    if (arr1[i] != arr2[i]) {
                        return false;
                    }
                }
                return true;
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值