java经典编程题全集【31-40】

java编程题【31-40】

程序31:逆序输出数组

题目概述:
接收一个数组并得到一个与之对应的逆序数组
代码:

package com.company;
import java.util.Scanner;

/**
 * @Author: cc雪影
 * @Description:逆序输出数组
 * @Date: Create in 20:22  2021/7/5
 */
public class demo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int i = 0;
        int arr[] = new int[20];
        int num = scanner.nextInt();//步骤1:num用来存储输入的数字
        do {
            arr[i] = num;//步骤2:将输入的数字传入数组
            i++;
            num = scanner.nextInt();//步骤3:继续接受一个数字
        } while (num != -1);//do-while循环中需要注意步骤1、2、3的顺序,当然你可以尝试使用while循环完成题目
        scanner.close();
        for (int j = i - 1; j >= 0; j--) {//遍历输出数组
            System.out.print(arr[j] + " ");
        }

    }
}

效果展示:

3 4 5 2 1 6 -1
6 1 2 5 4 3 

如果题目只要求逆序输出数组,那就直接自右向左遍历数组即可。

程序32:对整数小操作

题目概述:
取一个整数a从右部开始的4-7位
代码:

public class demo2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Integer a = scanner.nextInt();//步骤1:接受一个整型数字
        String string = a.toString();//步骤2:利用整型数字的toString()方法将数字转换成字符串,好处见步骤3
        scanner.close();
        for (int i = string.length() - 4; i >= string.length() - 7; i--) {
            System.out.print(string.charAt(i) + " ");//步骤3:字符串类似数组,可以根据下标取字符
        }

    }

}

效果展示:

567198093
8 9 1 7 

程序33:打印杨辉三角形

题目概述:
打印杨辉三角形的前十行
代码:

public class demo3 {
    public static void main(String[] args) {
        int[][] arr = new int[10][10];
        for (int i = 0; i < 10; i++) {//首先完成杨辉三角的外层的赋值
            arr[i][0] = 1;
            arr[i][i] = 1;
        }
        for (int i = 2; i < 10; i++) {//遍历杨辉三角的行
            for (int j = 1; j < i; j++) {//针对第i行进行赋值
                arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];//
            }
        }
//        遍历输出杨辉三角形
        for (int i = 0; i < arr.length; i++) {//遍历杨辉三角的行
            for (int j = i; j < arr.length - 1; j++) {//打印空格,与其深度成反比
                System.out.print("  ");
            }
            for (int j = 0; j < i + 1; j++) {//针对第i行进行遍历打印
                System.out.print(arr[i][j] + "  ");
            }
            System.out.println();//打印完成一行就换行
        }
    }
}

效果展示:

                  1  
                1  1  
              1  2  1  
            1  3  3  1  
          1  4  6  4  1  
        1  5  10  10  5  1  
      1  6  15  20  15  6  1  
    1  7  21  35  35  21  7  1  
  1  8  28  56  70  56  28  8  1  
1  9  36  84  126  126  84  36  9  1  

程序34:三个数字比大小

题目概述:
比大小:接受三个数,并按照从大到小的顺序进行进行排序
代码:

public class demo4 {
    public static void main(String[] args) {
        int[] arr = new int[3];
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) {
            arr[i] = scanner.nextInt();
        }
        scanner.close();
        //因为只有三个数,这里只需要三次判断就可以排序(如果数字太多考虑排序算法,如冒泡排序等)
        int tem;
        if (arr[0] < arr[1]) {
            tem = arr[0];
            arr[0] = arr[1];
            arr[1] = tem;
        }
        if (arr[2] > arr[1]) {
            tem = arr[2];
            arr[2] = arr[1];
            arr[1] = tem;
        }
        if (arr[0] < arr[1]) {
            tem = arr[0];
            arr[0] = arr[1];
            arr[1] = tem;
        }
        for (int a : arr) {
            System.out.print(a + " ");
        }
    }
    
}

效果展示:

3 5 1 
5 3 1 

程序35:数组元素对换

题目概述:
输入数组,最大的与第一个交换,最小的与最后一个交换
代码:

public class demo5 {
    private static java.util.Comparator<? super Integer> Comparator;

    public static void main(String[] args) {
        ArrayList<Integer> arrlist = new ArrayList<Integer>();
        ArrayList<Integer> tempArrlist = new ArrayList<Integer>();//临时的tempArrlist用来做排序操作,空间换时间
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入多个数字,并以 -1 作为结束");
        int num = scanner.nextInt();
        while (num != -1) {
            arrlist.add(num);
            tempArrlist.add(num);
            num = scanner.nextInt();
        }
        tempArrlist.sort(Comparator);
        int min = arrlist.indexOf(tempArrlist.get(0));//最小数的原下标
        int max = arrlist.indexOf(tempArrlist.get(arrlist.size() - 1));//最大数的原下标
        int temp;
        //最小数的对换
        temp = arrlist.get(arrlist.size() - 1);
        arrlist.set(arrlist.size() - 1, tempArrlist.get(0));
        arrlist.set(min, temp);
        //最大数的对换
        temp = arrlist.get(0);
        arrlist.set(0, tempArrlist.get(arrlist.size() - 1));
        arrlist.set(max, temp);
        //遍历输出数组
        System.out.println("交换后的结果是:");
        for (int a : arrlist) {
            System.out.print(a + " ");
        }
    }

}

效果展示:

请输入多个数字,并以 -1 作为结束
2 4 5 1 78 56 43
-1
交换后的结果是:
78 4 5 43 2 56 1 

程序36:数组冒泡

题目概述:
有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数

代码:

public class demo6 {
    public static void main(String[] args) {
        fun();
    }

    public static void fun() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入数字的个数n: ");
        int n = scanner.nextInt();
        int[] arr1 = new int[n];
        int[] arr2 = new int[n];
        System.out.print("请输入前后对换的数字长度m:");
        int m = scanner.nextInt();
        if (n / 2 >= m) {//判断一下能否做对换
            for (int i = 0; i < arr1.length; i++) {
                arr1[i] = scanner.nextInt();
                arr2[i] = arr1[i];
            }
            for (int i = 0; i < m; i++) {
                arr2[i] = arr1[arr1.length - m + i];
                arr2[arr2.length - m + i] = arr1[i];
            }
            for (int a : arr2) {
                System.out.print(a + " ");
            }
            System.out.println("请继续输入下一组,或者选择停止该项目。");
            fun();
        } else {
            System.out.println("想要对换的长度太长,无法进行对换!");
            fun();
        }
    }
}

效果展示:

请输入数字的个数n: 5
请输入前后对换的数字长度m:3
想要对换的长度太长,无法进行对换!
请输入数字的个数n: 5
请输入前后对换的数字长度m:2
3 6 9 4 1
4 1 9 3 6 请继续输入下一组,或者选择停止该项目。
请输入数字的个数n: 8
请输入前后对换的数字长度m:4
1 2 3 4 5 6 7 8
5 6 7 8 1 2 3 4 请继续输入下一组,或者选择停止该项目。
请输入数字的个数n: 

程序37:逢3过

题目概述:
有 n 个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),但凡报到3的人退出圈子,问最后留下的是原来的第几号

代码:

public class demo7 {
    public static void main(String[] args) {
        fun();
    }
    public static void fun() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入排成一圈的人数:");
        int n = scanner.nextInt();
        boolean[] arr = new boolean[n];//定义一个布尔类型的数组用来做判断
        for (int i = 0; i < arr.length; i++) {
            arr[i] = true;//true代表还在队列里,false代表已经出列
        }
        int leftCount = n;//leftCount代表当前队列里的人数
        int countNum = 0;//引入计数对象
        int index = 0;//自左向右扫描
        while (leftCount > 2) {
            if (arr[index] == true) {
                countNum++;
                if (countNum == 3) {
                    countNum = 0;//countNum到三清零,重新计数
                    arr[index] = false;
                    leftCount--;//是三的倍数,出列后,总数减少1人
                }
            }
            index++;
            if (index == n) {//实现操作可以需要多遍,重现自左向右扫描
                index = 0;
            }
        }
        for (int i = 0; i < n; i++) {
            if (arr[i] == true) {
                System.out.println("原排列在第 " + (i + 1) + " 位的人留下来了。");
            }
        }
        System.out.println("请开始下一次测试或选择结束程序");
        fun();
    }

}

效果展示:

请输入排成一圈的人数:
6
原排列在第 1 位的人留下来了。
原排列在第 5 位的人留下来了。
请开始下一次测试或选择结束程序
请输入排成一圈的人数:
8
原排列在第 4 位的人留下来了。
原排列在第 7 位的人留下来了。
请开始下一次测试或选择结束程序
请输入排成一圈的人数:
56
原排列在第 7 位的人留下来了。
原排列在第 29 位的人留下来了。
请开始下一次测试或选择结束程序
请输入排成一圈的人数:

程序38:求出字符串长度

题目概述:
求出字符串长度

代码:

public class demo8 {
    public static void main(String[] args) {
        fun();
    }
    public static void fun() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入想要检测的字符串:");
        String string = scanner.nextLine();
        System.out.println("通过字符串自带的length()方法:"+string.length());
        char[] arr = string.toCharArray();
        System.out.println("通过使用数组获取字符串长度:"+arr.length);
        fun();
    }
}

效果展示:

请输入想要检测的字符串:
sdhjsg
通过字符串自带的length()方法:6
通过使用数组获取字符串长度:6
请输入想要检测的字符串:
sfsgshfghfgdfy
通过字符串自带的length()方法:14
通过使用数组获取字符串长度:14
请输入想要检测的字符串:

程序39:奇、偶倒数和

题目概述:
输入偶数,求各偶数的倒数和;奇数同理

代码:

public class demo9 {
    static int number = 0;

    public static void main(String[] args) {
        judge();
        if (number % 2 == 0) {
            fun1(number);
        } else {
            fun2(number);
        }
    }

    public static void judge() {//
        /**
         * @description:判断函数,当用户输入不规范数据时,可以让用户重现输入数据
         * @createDate: 2021/7/6
         * @return: void
         */
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int tem = scanner.nextInt();
        if (tem <= 0) {
            System.out.println("输入的数字应该大于0,请重新输入:");
            judge();//数据不规范,重新接受数据进行判断
        } else {//数据符合要求,将整数赋值给静态变量number
            number = tem;
        }
    }

    public static void fun1(int num) {
        /**
         * @description:当输入为偶数时,进行此计算方法
         * @param num
         * @createDate: 2021/7/6
         * @return: void
         */
        double sum = 0;
        for (int i = 2; i <= num; i = i + 2) {
            sum = sum + 1.0 / i;
        }
        System.out.println("计算结果为:" + sum);
    }

    public static void fun2(int num) {
        /**
         * @description:当输入为奇数时,进行此计算方法
         * @param num
         * @createDate: 2021/7/6 17:04
         * @return: void
         */
        double sum = 0;
        for (int i = 1; i <= num; i = i + 2) {
            sum = sum + 1.0 / i;
        }
        System.out.println("计算结果:" + sum);
    }
}

效果展示:

请输入一个整数:
0
输入的数字应该大于0,请重新输入:
请输入一个整数:
-3
输入的数字应该大于0,请重新输入:
请输入一个整数:
8
计算结果为:1.0416666666666665

Process finished with exit code 0

程序40:字符串排序

题目概述:
输入一个字符串,按照其大小顺序进行排序
代码:

public class demo10 {
    private static java.util.Comparator<? super Character> Comparator;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String string = scanner.nextLine();
        char[] arr = string.toCharArray();//将字符串转成字符数组
        ArrayList<Character> arrayList = new ArrayList<>();
        for (char c : arr) {//转换到ArrayList进行处理
            arrayList.add(c);
        }
        arrayList.sort(Comparator);//利用ArrayList的排序操作,简单实现顺序的问题
        for (char c : arrayList) {//遍历输出
            System.out.print(c + " ");
        }
    }
}

效果展示:

jhdfsbfh
b d f f h h j s 

java经典编程题全集【1-10】

java经典编程题全集【11-30】

  • 10
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回答: Java50道经典编程是一套经典编程目集合,其中包含了各种不同类型的编程。这些目涵盖了循环、条件语句、方法调用等多个方面的知识点。其中一道目是读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。\[1\]另一道目是计算字符串中子串出现的次数。\[2\]还有一道目是找到一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数。\[3\]这些目都是通过使用循环、条件语句和方法调用等技巧来解决问的。如果你对这些目感兴趣,可以尝试自己编写代码来解决它们。 #### 引用[.reference_title] - *1* [java编程练习50道](https://blog.csdn.net/fx_gcw2018/article/details/108860979)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Java基础编程50道](https://blog.csdn.net/yuweiran_5/article/details/124488415)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值