杀鸡焉用牛刀 发表于 2024-8-2 16:31:53

JavaSE基础编程十题(数组和方法部分)

写在前面

继承昨天Java中的数组和方法部分的习题,今天写十题编程题,来看看你能写出来几题。答案也是仅供参考,如果有更好的解法接待在下面留言!
题目展示

1.数组查找操作:定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,步伐判断数组是否包含有这个单词,包含这个单词就打印出“Yes”,不包含就打印出“No”。
代码:
public static void main(String[] args) {
      System.out.println("请输入一个单词:");
      Scanner sc = new Scanner(System.in);
      String word = sc.next();
      String[] array = new String[]{"first","time","you","sing"
                ,"song","got","practice","same","principle","applies"};
      for(int i = 0; i < array.length;i++)
      {
            if(word.equals(array))
            {
                System.out.println("Yes");
                return;
            }
      }
      System.out.println("No");
    }效果截图:
https://img2024.cnblogs.com/blog/3492080/202408/3492080-20240801205913174-739628038.png
https://img2024.cnblogs.com/blog/3492080/202408/3492080-20240801205916516-438895333.png
2.数组逆序操作:定义长度为10的数组,将数组元素对调,并输出对调前后的效果。思绪:把0索引和arr.length-1的元素互换,把1索引和arr.length-2的元素互换,只要互换到arr.length/2的时间即可。
代码:
public static void main(String[] args) {
      System.out.println("逆序前的数组为:");
      char[] array = new char[]{'a','b','c','d','e','f','g','h','i','j'};
      printArray(array);
      for (int start=0, end = array.length-1 ; start < end ; start++,end--)
      {
            char temp = array;
            array = array;
            array= temp;
      }
      System.out.println("逆序后的数组为:");
      printArray(array);
    }

    public static char[] printArray(char[] arr){
      for (int k = 0 ; k < arr.length ; k++){
            if(k==0){
                System.out.print("["+arr+", ");
            }else if(k == arr.length-1){
                System.out.print(arr+"]");
            }else {
                System.out.print(arr+", ");
            }
      }
      System.out.println();
      return arr;
    }效果截图:
https://img2024.cnblogs.com/blog/3492080/202408/3492080-20240801210023480-1638476119.png
3.归并数组操作:现有如下一个数组: int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,天生的新数组为: int newArr [] ={1,3,4,5,6,6,5,4,7,6,7,5}
代码:
public static void main(String[] args) {
      int[] oldArr = new int[]{1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
      System.out.println("原数组为:");
      printArray(oldArr);
      int count = 0;
      for (int i = 0 ; i<oldArr.length ; i++){
            if(oldArr != 0){
                count++;
            }
      }
      int[] newArr = new int;
      int size = 0;
      for (int i = 0 ; i< oldArr.length;i++)
      {
            if(oldArr != 0)
            {
                newArr = oldArr;
                size++;
            }
      }
      System.out.println("去除0之后的数组为:");
      printArray(newArr);
    }
    public static int[] printArray(int[] arr){
      for (int k = 0 ; k < arr.length ; k++){
            if(k==0){
                System.out.print("["+arr+", ");
            }else if(k == arr.length-1){
                System.out.print(arr+"]");
            }else {
                System.out.print(arr+", ");
            }
      }
      System.out.println();
      return arr;
    }效果截图:
https://img2024.cnblogs.com/blog/3492080/202408/3492080-20240801210249719-955962387.png
https://img2024.cnblogs.com/blog/3492080/202408/3492080-20240801210257988-1081341559.png
5.二维数组遍历求和操作:用二重循环求出二维数组b所有元素的和:int[][] b={{11},{21,22},{31,32,33}}。
代码:
public static void main(String[] args) {
      int[] a = new int[]{3, 36, 55, 68, 75, 88, 12, 24};
      int[] orderAsc = maoPaoOrder(a);
      System.out.println("升序排序好的数组为:");
      printArray(orderAsc);
      Scanner sc = new Scanner(System.in);
      System.out.println("请输入一个您要查找的数:");
      int number = sc.nextInt();
      int front = 0;
      int end = a.length - 1;
      int res = -1;
      while (front <= end) {
            int mid = (front + end) / 2;
            if (number > a) {
                front = mid + 1;
            } else if (number < a) {
                end = mid - 1;
            } else {
                res = mid;
                break;
            }
      }
      if (res == -1) {
            System.out.println(-1);
      } else {
            System.out.println("查找成功!你要查找的数的索引为:" + res);
      }
    }

    public static int[] maoPaoOrder(int[] arr) {
      for (int i = 0; i < arr.length; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (arr > arr) {
                  int temp = arr;
                  arr = arr;
                  arr = temp;
                }
            }
      }
      return arr;
    }

    public static int[] printArray(int[] arr) {
      for (int k = 0; k < arr.length; k++) {
            if (k == 0) {
                System.out.print("[" + arr + ", ");
            } else if (k == arr.length - 1) {
                System.out.print(arr + "]");
            } else {
                System.out.print(arr + ", ");
            }
      }
      System.out.println();
      return arr;
    }效果截图:
https://img2024.cnblogs.com/blog/3492080/202408/3492080-20240801210352395-1972045908.png
*6.题目:输入某年某月某日,判断这一天是这一年的第几天?分析:以3月5日为例,先把前两个月的加起来,然后再加上5天即本年第几天,特殊情况,闰年且输入月份大于3需考虑多加一天。可定义数组存储1-12月各月天数。 *
代码:
public static void main(String[] args) {
      int[][] b = {{11}, {21, 22}, {31, 32, 33}};
      int sum = 0;
      for (int i = 0; i < b.length; i++) {
            for (int j = 0; j < b.length; j++) {
                sum = sum + b;
            }
      }
      System.out.println("二维数组b的元素和为:" + sum);
    }效果截图:
https://img2024.cnblogs.com/blog/3492080/202408/3492080-20240801210512876-989438519.png
7.使用二分法查找有序数组中元素。找到返回索引,不存在输出-1。使用递归实现。
代码:
public static void main(String[] args) {
      int[] days = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
      int year = 0;
      int month = 0;
      int day = 0;
      int sum = 0;
      System.out.println("请输入日期,包含年月日,两个数之间用空格分隔:");
      Scanner sc = new Scanner(System.in);
      year = sc.nextInt();
      month = sc.nextInt();
      day = sc.nextInt();
      if ((year % 100 != 0 && year % 4 == 0) || year % 400 == 0) {
            days = 29;
      }
      for (int i = 0; i < month - 1; i++) {
            sum = sum + days;
      }
      sum = sum + day;
      System.out.println(year + "年" + month + "月" + day + "日对应这一年的第" + sum + "天。");
    }效果截图:
https://img2024.cnblogs.com/blog/3492080/202408/3492080-20240801210539346-692709333.png
https://img2024.cnblogs.com/blog/3492080/202408/3492080-20240801210544894-1421152596.png
8.数组A:1,7,9,11,13,15,17,19;数组b:2,4,6,8,10   两个数组归并为数组c,按升序分列。
代码:
public static void main(String[] args) {
      int[] a = new int[]{3, 36, 55, 68, 75, 88, 12, 24};
      int[] orderAsc = maoPaoOrder(a);
      System.out.println("升序排序好的数组为:");
      printArray(orderAsc);
      Scanner sc = new Scanner(System.in);
      System.out.println("请输入一个您要查找的数:");
      int number = sc.nextInt();
      int res = erFenSearch(a, number);
      if (res == -1) {
            System.out.println("查找失败!" + -1);
      } else {
            System.out.println("查找成功!你要查找的数的索引为:" + res);
      }
    }

    //二分查找的结果方法
    public static int erFenSearch(int[] arr, int x) {
      return erFenSearch(arr, x, 0, arr.length - 1);
    }

    //二分查找的方法
    public static int erFenSearch(int[] arr, int x, int front, int end) {
      int mid = (front + end) / 2;
      while (front <= end) {
            if (x > arr) {
                return erFenSearch(arr, x, mid + 1, end);
            } else if (x < arr) {
                return erFenSearch(arr, x, front, mid - 1);
            } else {
                return mid;
            }
      }
      return -1;
    }

    //冒泡排序数组
    public static int[] maoPaoOrder(int[] arr) {
      for (int i = 0; i < arr.length; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (arr > arr) {
                  int temp = arr;
                  arr = arr;
                  arr = temp;
                }
            }
      }
      return arr;
    }

    //打印数组方法
    public static int[] printArray(int[] arr) {
      for (int k = 0; k < arr.length; k++) {
            if (k == 0) {
                System.out.print("[" + arr + ", ");
            } else if (k == arr.length - 1) {
                System.out.print(arr + "]");
            } else {
                System.out.print(arr + ", ");
            }
      }
      System.out.println();
      return arr;
    }效果截图:
https://img2024.cnblogs.com/blog/3492080/202408/3492080-20240801210629739-363186447.png
9.字符大小转换:输入一个字符,判断它是否为小写字母,如果是,将它转换成大写字母,否则,不转换;
代码:
public static void main(String[] args) {      Scanner sc = new Scanner(System.in);      System.out.println("请输入一个英文字母:");      char c = sc.next().charAt(0);      if (65
页: [1]
查看完整版本: JavaSE基础编程十题(数组和方法部分)