Java编程练习题(涉及循环,函数等),新手小白都能看懂,收藏这篇就够了

目录

1. 从控制台输入一个打印的行数,打印如下形状

2. 九九乘法表

3. 输入一个数判断是否质数

4. 请使用循环打印如下图案

5. 输入三边的长度,求三角形的面积和周长(海伦公式)

6. 请输入一个数,判断这个数是偶数还是奇数。

7. 循环输入某同学S1结业考试的5门课成绩,并计算平均分

8. 请从控制台输入一个数,是质数(素数)还是合数

9. 求1~100之间不能被3整除的数之和

10. 根据用户输入的数,打印一个表格

11. 请使用循环完成如下图案的打印

12. 请在控制台上输入两个数,并且输入一个符号(±*/%),使用switch语句

13. 100~1000返回内,能补5和6整除的数

14. 输入一个年份,判断该年是否是闰年

15. 健康计划:用户输入身高(m),体重(kg),计算BMI,并判断

16. 一个自然数与3的和是5的倍数,与3的差是6的倍数,这个自然数最小是几?

17. 在400-500之间求一个数,它被2除余1,被5除余3,被9除余1,这个数是多少?

18. 有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?

19. 编程求一个四位自然数ABCD,它乘以A后变成DCBA

20. 编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和

21. 某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去除余数都是1,求这个自然数

22. 有一种最简真分数,它们的分子与分母的乘积都是140,把所有这样的真分数从小到大打印出来

23. 一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.

24. 把123456789这个数乘以一个什么数,能使它的结果不但不含零,而且仍然是 由1,2,3,4,5,6,7,8,9这九个数字组成的,只是顺序不同而已

25. 验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除

26. 如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数"

27. 求水仙花数。ABC = a3+b3+c^3

28. 求 a+aa+aaa+…+aaaaaaaaa=? 其中a为1至9之中的一个数,项数也要可以指定

29. 求 2/1+3/2+5/3+8/5+13/8…前20项之和?

30. 求第n项的斐波那契数列的值,f(n) = f(n-1) + f(n-2)

31. 一个人开始上楼梯,假设这个人每一次只能上一个或者两个台阶,当他到达第n个台阶时,问:共有多少种走法?

32. 不死兔子:小明今年高考,考了700,父母,给他买了一对刚刚出生小兔子,四个月后成长为成年兔子,成年后,每过一个月,假设生出一对新的小兔子,问:第n月,小明家共有多少对兔子。


1. 从控制台输入一个打印的行数,打印如下形状

\*         1
\*\*        2
\*\*\*       3
\*\*\*\*      4
\*\*\*\*\*     5
import java.util.Scanner;

public class PrintStar1 {
    public static void main(String[] args) {
        /*
         *		    1
         **		    2
         ***		3
         ****		4
         *****		5
         */
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要打印的行数:");
        int line = scanner.nextInt();

        for (int i = 0; i < line; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

结果:

2. 九九乘法表

public class NineNine {
    public static void main(String[] args) {
        for (int i = 1; i < 10; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(i + "*" + j + "=" + i * j + "\t");
            }
            System.out.println();
        }
    }
}

结果:

3. 输入一个数判断是否质数

import java.util.Scanner;

public class PrimeNumber {
    public static void main(String[] args) {
//        输入一个数判断是否质数
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int num = scan.nextInt();
        int i;
        for (i = 2; i < num; i++) {
            if (num % i == 0){
                System.out.println(num + "不是质数!");
                break;
            }
        }
        if (i == num){
            System.out.println(num + "是质数!");
        }
    }
}

结果:

4. 请使用循环打印如下图案

\*  

***
*****
*******
*********

public class PrintStar2 {
    public static void main(String[] args) {
        /*
                            空格     *
             *              4       1
            ***             3       3
           *****            2       5
          *******           1       7
         *********          0       9
         */
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= 5 - i; j++) {
                System.out.print(" ");
            }
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

结果:

5. 输入三边的长度,求三角形的面积和周长(海伦公式)

import java.util.Scanner;

public class Helen {
    public static void main(String[] args) {
//        输入三边的长度,求三角形的面积和周长(海伦公式)
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入三角形三遍长:");
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c = scanner.nextInt();
        if (a + b > c && a + c > b && b + c > a){
            int perimeter = a + b + c;
            int p = perimeter / 2;
            double area = Math.pow((p * (p - a) * (p - b) * (p - c)), 0.5);
            System.out.println("三角形的周长:" + perimeter + ",面积:" + area);
        }
    }
}

结果:

6. 请输入一个数,判断这个数是偶数还是奇数。

如果使用偶数,请判断从1到该数是3的倍数有哪些;

如果是奇数,请判断从1到该数是5的倍数有哪些。

import java.util.Scanner;

public class JudgeOddEven {
    public static void main(String[] args) {
        /*
        请输入一个数,判断这个数是偶数还是奇数。
        如果使用偶数,请判断从1到该数是3的倍数有哪些;
        如果是奇数,请判断从1到该数是5的倍数有哪些。
         */
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int num = scan.nextInt();
        if (num % 2 == 0){
            System.out.println(num + ":是偶数");
            for (int i = 1; i <= num; i++){
                if (i % 3 == 0){
                    System.out.println(i);
                }
            }
        }else {
            System.out.println(num + ":是奇数");
            for (int i = 1; i <= num; i++){
                if (i % 5 == 0){
                    System.out.println(i);
                }
            }
        }
    }
}

结果:

7. 循环输入某同学S1结业考试的5门课成绩,并计算平均分

import java.util.Scanner;

public class AverageScore {
    public static void main(String[] args) {
        /*
        循环输入某同学S1结业考试的5门课成绩,并计算平均分
         */
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入某同学的语文、数学、英语、物理、化学成绩:");
        double chinese = scan.nextDouble();
        double math = scan.nextDouble();
        double english = scan.nextDouble();
        double physical = scan.nextDouble();
        double chemistry = scan.nextDouble();
        double averageScore = (chinese + math + english + physical + chemistry) / 5;
        System.out.println(averageScore);
    }
}

结果:

8. 请从控制台输入一个数,是质数(素数)还是合数

提示:从2开始,只能被1和它本身除尽的数,是质数(素数)

import java.util.Scanner;

public class JudgePrime {
    public static void main(String[] args) {
        /*
        请从控制台输入一个数,是质数(素数)还是合数
        提示:从2开始,只能被1和它本身除尽的数,是质数(素数)
         */
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入一个自然数(1, 2, 3, ...):");
        int num = scan.nextInt();
        if (num < 2) {
            System.out.println(num + "既不是质数也不是合数!");
        }else {
            int i;
            for (i = 2; i < num; i++) {
                if (num % i == 0) {
                    System.out.println(num + "是合数!");
                    break;
                }
            }
            if (i == num) {
                System.out.println(num + "是质数!");
            }
        }
    }
}

结果:

9. 求1~100之间不能被3整除的数之和

public class SumThree {
    public static void main(String[] args) {
        /*
        求1~100之间不能被3整除的数之和
         */
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 3 != 0) {
                sum += i;
            }
        }
        System.out.println(sum);
    }
}

结果:

10. 根据用户输入的数,打印一个表格

    1    1*1    1*1*1
    2    2*2    2*2*2
    ....

    n    n平方    n立方
import java.util.Scanner;

public class PrintTable {
    public static void main(String[] args) {
        /*
        根据用户输入的数,打印一个表格
            1	1*1	    1*1*1
            2	2*2	    2*2*2
            ....
            n	n平方	n立方
        */
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入一个正整数:");
        int n = scan.nextInt();
        for (int i = 1; i <= n; i++) {
            System.out.println(i + "\t" + i * i + "\t" + i * i * i);
        }
    }
}

结果:

11. 请使用循环完成如下图案的打印

public class PrintManyStar {
    public static void main(String[] args) {
        // 请使用循环完成如下图案的打印

        /*          行      列
        *           1       1
        **          2       2
        ***         3       3
        ****        4       4
        *****       5       5
        ******      6       6
         */
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j <= i; j++){
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("------------");
        /*          行  空  列
           *        1   3   1
          ***       2   2   3
         *****      3   1   5
        *******     4   0   7
         */
        for (int i = 1; i <= 4; i++) {
            for (int k = 1; k <= 4 - i; k++){
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("----------");
        /*          行  空  列
        *******     1   0   7
         *****      2   1   5
          ***       3   2   3
           *        4   3   1
         */
        for (int i = 1; i <= 4; i++) {
            for (int k = 1; k <= i - 1; k++){
                System.out.print(" ");
            }
            for (int j = 1; j <= 8 - (2 * i -1); j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("----------");
        /*
           *
          ***
         *****
        *******
           *
           *
           *
           *
         */
        for (int i = 1; i <= 8; i++) {
            if (i <= 4) {
                for (int k = 1; k <= 4 - i; k++){
                    System.out.print(" ");
                }
                for (int j = 1; j <= 2 * i - 1; j++) {
                    System.out.print("*");
                }
            }
            else {
                for (int k = 1; k < 4; k++){
                    System.out.print(" ");
                }
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("----------");
        /*          行  空  列
           *        1   3   1
          ***       2   2   3
         *****      3   1   5
        *******     4   0   7
         *****      1   1   5
          ***       2   2   3
           *        3   3   1
         */
        // 上四行
        for (int i = 1; i <= 4; i++) {
            for (int k = 1; k <= 4 - i; k++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        // 下三行
        for (int i = 1; i <= 3; i++) {
            for (int k = 1; k <= i; k++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= 6 - (2 * i -1); j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("------------");
        /*          行  空  列
           *        1   3   "*"
          * *       2   2   "*"+" "*1+"*"
         *   *      3   1   "*"+" "*3+"*"
        *     *     4   0   "*"+" "*5+"*"
         *   *      1   1   "*"+" "*3+"*"
          * *       2   2   "*"+" "*1+"*"
           *        3   3   "*"
         */
        for (int i = 1; i <= 4; i++) {
            for(int k = 1; k <= 4 - i; k++) {
                System.out.print(" ");
            }
            if (i == 1) {
                System.out.print("*");
            }else {
                System.out.print("*");
                for (int j = 1; j <= 2 * i - 1 - 2; j++){
                    System.out.print(" ");
                }
                System.out.print("*");
            }
            System.out.println();
        }
        for (int i = 1; i <= 3; i++) {
            for (int k = 1; k <= i; k++) {
                System.out.print(" ");
            }
            if (i == 3) {
                System.out.print("*");
            }else {
                System.out.print("*");
                for (int j = 1; j <= 4 - 2 * i + 1; j++){
                    System.out.print(" ");
                }
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("------------");
        /*          行  空  列
           *        1   3   1
          ***       2   2   3
         * * *      3   1   *
        *******     4   0   7
         * * *      1   1   *5
          ***       2   2   3
           *        3   3   1
         */
        for (int i = 1; i <= 4; i++) {
            for (int k = 1; k <= 4 - i; k++) {
                System.out.print(" ");
            }
            if (i == 3) {
                System.out.print("* * *");
            }else {
                for (int j = 1; j <= 2 * i - 1; j++) {
                    System.out.print("*");
                }
            }
            System.out.println();
        }
        for (int i = 1; i <= 3; i++) {
            for (int k = 1; k <= i; k++) {
                System.out.print(" ");
            }
            if (i == 1) {
                System.out.print("* * *");
            }else {

                for (int j = 1; j <= 7 - 2 * i; j++) {
                    System.out.print("*");
                }
            }
            System.out.println();
        }
    }
}

结果:

12. 请在控制台上输入两个数,并且输入一个符号(±*/%),使用switch语句

import java.util.Scanner;

public class Calculator {
    // 请在控制台上输入两个数,并且输入一个符号(+-*/%),使用switch语句
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入两个数:");
        int num1 = scan.nextInt();
        int num2 = scan.nextInt();
        System.out.print("请输入运算符(+-*/%):");
        String operator = scan.next();
        String result = calculator(num1, num2, operator);
//        double a = 7.1;
//        double b = 5.3;
//        System.out.println(a+b);  // 12.399999999999999,精度丢失
        System.out.println(result);
    }

    public static String calculator(int num1, int num2, String operator){
        switch (operator) {
            case "+":
                return num1 + operator + num2 + "=" + (num1 + num2);
            case "-":
                return num1 + operator + num2 + "=" + (num1 - num2);
            case "*":
                return num1 + operator + num2 + "=" + (num1 * num2);
            case "/":
                return num1 + operator + num2 + "=" + (num1 / num2);
            case "%":
                return num1 + operator + num2 + "=" + (num1 % num2);
        }
        return null;
    }
}

结果:

13. 100~1000返回内,能补5和6整除的数

public class DivideFiveSix {
    public static void main(String[] args) {
        // 100~1000返回内,能补5和6整除的数
        divideFiveSix();
    }

    public static void divideFiveSix() {
        int count = 0;
        for (int i = 100; i <= 1000; i++){
            if (i % 5 ==0 && i % 6 == 0) {
                System.out.print(i + "  ");
                count += 1;
            }
        }
        System.out.println();
        System.out.println("能被5和6整除的数有:" + count + "个");
    }
}

结果:

14. 输入一个年份,判断该年是否是闰年

import java.util.Scanner;

public class JudgeLeapYear {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入年份:");
        int year = scanner.nextInt();
        boolean isLeap = judgeLeapYear(year);
        if (isLeap){
            System.out.println(year + "是闰年");
        }else {
            System.out.println(year + "是平年");
        }
    }

    public static boolean judgeLeapYear(int year) {
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            return true;
        }
        return false;
    }
}

结果:

15. 健康计划:用户输入身高(m),体重(kg),计算BMI,并判断

计算公式:BMI = 体重 / 身高^2
BMI < 18.5:过轻
18.5≤ BMI <24:正常
24 ≤ BMI <27:过重
27 ≤ BMI < 30:轻度肥胖
30 ≤ BMI < 35:中度肥胖
BMI ≥ 35:重度肥胖

import java.util.Scanner;

public class BodyMassIndex {
    /*
    健康计划
	    用户输入身高(m),体重(kg)
	    计算公式:BMI =体重 / 身高^2
	    BMI < 18.5:过轻
	    18.5≤ BMI <24:正常
	    24 ≤ BMI <27:过重
	    27 ≤ BMI < 30:轻度肥胖
	    30 ≤ BMI < 35:中度肥胖
	    BMI ≥ 35:重度肥胖
     */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入你的身高(m)、体重(kg):");
        float height = scanner.nextFloat();
        float weight = scanner.nextFloat();
        String result = bodyMassIndex(height, weight);
        System.out.println(result);
    }

    public static String bodyMassIndex(float height, float weight) {
        float bMI = weight / (height * height);
        System.out.println(bMI);
        if (bMI < 18.5){
            return "过轻!";
        }else if (bMI < 24) {
            return "正常!";
        }else if (bMI < 30) {
            return "过重!";
        }else if (bMI < 35) {
            return "过度肥胖!";
        }else {
            return "重度肥胖!";
        }
    }
}

结果:

16. 一个自然数与3的和是5的倍数,与3的差是6的倍数,这个自然数最小是几?

public class FindNumber {
    public static void main(String[] args) {
        // 一个自然数与3的和是5的倍数,与3的差是6的倍数,这个自然数最小是几?
        // (num + 3) % 5 == 0 && (num - 3) % 6 == 0
        int result = findNum();
        System.out.println(result);
    }

    public static int findNum() {
        int num = 0;
        for (int i = 0; i < 100; i++){
            if ((i + 3) % 5 == 0 && (i - 3) % 6 == 0) {
                num = i;
                break;
            }
        }
        return num;
    }
}

结果:

17. 在400-500之间求一个数,它被2除余1,被5除余3,被9除余1,这个数是多少?

public class FindNumber1 {
    public static void main(String[] args) {
        int result = findNum1();
        System.out.println(result);
    }

    public static int findNum1() {
        //在400-500之间求一个数,它被2除余1,被5除余3,被9除余1,这个数是多少?
        // i % 2 == 1 && i % 5 == 3 && i % 9 == 1
        int i;
        for (i = 400; i <= 500; i++) {
            if (i % 2 == 1 && i % 5 == 3 && i % 9 == 1) {
                break;
            }
        }
        return i;
    }
}

结果:

18. 有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?

public class FindNumber2 {
    public static void main(String[] args) {
        int result1 = findNumMin();
        System.out.println(result1);
        int result2 = findNumMax();
        System.out.println(result2);
    }
    // 有一些四位数,百位数字都是3,十位数字都是6,
    // 并且它们既能被2整除,又能被3整除,
    // 求这样的四位数中最大的和最小的两数各是几?
    public static int findNumMin() {
        int num = 0;
        label:for (int i = 1; i < 10; i++) {
            for (int j = 1; j < 10; j++) {
                num = i * 1000 + 3 * 100 + 6 * 10 + j;
                if (num % 2 == 0 && num % 3 == 0) {
//                    System.out.println(num);
                    break label;
                }
            }
        }
        return num;
    }
    public static int findNumMax() {
        int num = 0;
        labal:for (int i = 9; i > 0; i--) {
            for (int j = 9; j > 0; j--) {
                num = i * 1000 + 3 * 100 + 6 * 10 + j;
                if (num % 2 == 0 && num % 3 == 0) {
//                    System.out.println(num);
                    break labal;
                }
            }
        }
        return num;
    }
}

结果:

19. 编程求一个四位自然数ABCD,它乘以A后变成DCBA

public class FindNumber3 {
    public static void main(String[] args) {
//        int i = 1024;
//        int qian = i / 1000;
//        int bai = i % 1000 / 100;
//        int shi = i % 1000 % 100 / 10;
//        int ge = i % 1000 % 100 % 10;
//        System.out.println(" " + qian + bai + shi + ge);
        findNum();
    }

    // 编程求一个四位自然数ABCD,它乘以A后变成DCBA
    public static void findNum() {
        int i;
        for (i = 1000; i < 10000; i++) {
            int qian = i / 1000;
            int bai = i % 1000 / 100;
            int shi = i % 1000 % 100 / 10;
            int ge = i % 1000 % 100 % 10;
            int j = ge * 1000 + shi * 100 + bai * 10 + qian;
            if (i * qian == j) {
                System.out.println(i);
            }
        }
    }
}

结果:

20. 编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和

public class FindNumber4 {
    // 编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和
    public static void main(String[] args) {
        findNum();
    }

    public static void findNum() {
        int num;
        for (num = 100; num < 999; num++) {
            int bai = num / 100;
            int shi = num % 100 / 10;
            int ge = num % 100 % 10;
            int sum = bai + shi + ge;
            if (num / 11 == sum) {
                System.out.println(num);
            }
        }
    }
}

结果:

21. 某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去除余数都是1,求这个自然数

public class FindNumber5 {
    // 某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去除余数都是1,求这个自然数
    public static void main(String[] args) {
        findNum();
    }

    public static void findNum() {
        int i;
        for (i = 560; i < 10000; i++) {
            int shang = i / 80;
            int yu = i % 80;
            if (shang % 7 == 0 && yu % 2 == 1 && yu % 3 == 1
                    && yu % 4 == 1 && yu % 5 == 1 && yu % 6 == 1) {
                System.out.println(i);
            }
        }
    }
}

结果:

22. 有一种最简真分数,它们的分子与分母的乘积都是140,把所有这样的真分数从小到大打印出来

public class FindNumber6 {
    // 有一种最简真分数,它们的分子与分母的乘积都是140,把所有这样的真分数从小到大打印出来
    public static void main(String[] args) {
        findNum();
    }

    public static void findNum(){
//        for (int i = 1; i <= 140; i++){
//            if (140 % i == 0) {
//                System.out.println(i);
//            }
//        }
        for (int i = 1; i < (int)(Math.sqrt(140)); i++) {
            label:for (int j = (int)(Math.sqrt(140)); j <= 140; j++) {
                if (i * j == 140) {
                    // 去除当中可以进行约分的i、j
                    if (i != 1) {
                        for (int k = 2; k <= i; k++) {
                            if (j % k == 0 && i % k == 0){
                                continue label;
                            }
                        }
                    }
                    System.out.println(i + "/" + j);
                }
            }
        }
    }
}

结果:

23. 一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.

public class FindNumber7 {
    public static void main(String[] args) {
        findNum();
    }
    // 一个五位数,若在它的后面写上一个7,得到一个六位数A,
    // 若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数
    public static void findNum() {
        int i;
        for (i = 10000; i < 100000; i++) {
            if((7 * 100000 + i) / (i * 10 + 7) == 5 &&(7 * 100000 + i) % (i * 10 + 7) == 0) {
                System.out.println(i);
            }
        }
    }
}

结果:

24. 把123456789这个数乘以一个什么数,能使它的结果不但不含零,而且仍然是 由1,2,3,4,5,6,7,8,9这九个数字组成的,只是顺序不同而已

public class FindNumber8 {
    public static void main(String[] args) {
        findNum();
    }
    //把123456789这个数乘以一个什么数,能使它的结果不但不含零,
    // 而且仍然是由1,2,3,4,5,6,7,8,9这九个数字组成的,只是顺序不同而已
    public static void findNum(){
        int num = 123456789;
        int condition = 999999999 / num;
//        System.out.println(condition);
        for (int i = 2; i < condition; i ++) {
            int result = num * i;
            if (countBits(result) == countBits(num)) {
                System.out.println(result);
            }
        }
//        System.out.println(countBits(1034)); //测试countBits()函数
    }

    public static int countBits(int num){
        int c = num % 10;
        if (num <= 10) {
            return c;
        }
        return c * countBits(num / 10);
    }
}

结果:

25. 验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除

public class VerifyNumber {
    public static void main(String[] args) {
        boolean result = verifyNum();
        if (result) {
            System.out.println("结论正确!");
        } else {
            System.out.println("结论错误!");
        }
//        System.out.println(countBits(10));
    }
    // 验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除
    public static boolean verifyNum(){
        boolean isFlag = true;
        for (int i = 10; i < 100; i++) {
            int result = (i - countBits(i));
            if (result % 9 != 0) {
                System.out.println(i);
                isFlag = false;
                break;
            }else {
                System.out.println(i);
            }
        }
        return isFlag;
    }

    // 计算各位数字之和
    public static int countBits(int num){
        int c = num % 10;
        if (num < 10) {
            return c;
        }
        return c + countBits(num / 10);
    }
}

结果:

26. 如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数"

public class TwinNumber {
    // 如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数"
    public static void main(String[] args) {
        int[] arr = primeNumber();
        System.out.println(Arrays.toString(arr));

        // 冒泡
        for (int i = 0; i < arr.length; i++){
            for (int j = i + 1; j < arr.length; j++)
            if (arr[j] - arr[i] == 2){
                System.out.println("孪生数:" + arr[i] + "+" + arr[j]);
                break;
            }
        }
    }

    // 遍历所有100以内的质数,返回100以内质数的数组
    public static int[] primeNumber(){
        boolean isFlag = true;
        int count = 0;
        int[] arr = new int[100];
        for (int i = 2; i <= 100; i++) {
            for (int j = 2; j < Math.sqrt(i); j++) {
                if (i % j == 0) {
                    isFlag = false;
                    break;
                }
            }if (isFlag) {
//                System.out.println(i);
                arr[count] = i;
                count++;
            }
            isFlag = true;
        }
        int[] arr1 = new int[count];
        for (int i = 0; i < arr1.length; i++) {
            arr1[i] = arr[i];
        }
        return arr1;
    }
}

结果:

27. 求水仙花数。ABC = a3+b3+c^3

public class NarcissisticNumber {
    public static void main(String[] args) {
        narcissisticNum();
    }
    // 求水仙花数 ABC  = a^3+b^3+c^3
    public static void narcissisticNum(){
        for (int i = 100; i < 1000; i++) {
            int a = i / 100;
            int b = i % 100 / 10;
            int c = i % 100 % 10;
            if (i == (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3))){
                System.out.println(i);
            }
        }
    }
}

结果:

28. 求 a+aa+aaa+…+aaaaaaaaa=? 其中a为1至9之中的一个数,项数也要可以指定

使用递归和循环两种方法:

import java.util.Scanner;

public class RecursionTest {
    //求  a+aa+aaa+.......+aaaaaaaaa=?
    //其中a为1至9之中的一个数,项数也要可以指定。
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入a的值(1-9):");
        int a = scan.nextInt();
        System.out.println("请输入项数:");
        int item = scan.nextInt();
        countSum(a, item);

        // 递归
        int sum = 0;
        for (int i = 1; i <= item; i++){
            int result = countSum1(a, i);
            System.out.println(result);
            sum += result;
        }
        System.out.println(sum);
    }

    // 循环
    public static void countSum(int a, int item){
        int num = 0;
        int sum = 0;
        for (int i = 1; i <= item; i++) {
            num += a * (int)(Math.pow(10, i-1));
            System.out.println(num);
            sum += num;
        }
        System.out.println(sum);
    }

    // 递归
    public static int countSum1(int a, int item){
        if (item == 1){
            return a;
        }
        return countSum1(a,item - 1) + a * (int) (Math.pow(10, item - 1));
    }
}

结果:

29. 求 2/1+3/2+5/3+8/5+13/8…前20项之和?

public class RecursionTest1 {
    // 求 2/1+3/2+5/3+8/5+13/8.....前20项之和?
    // 分子:2 3 5 8 13
    // 分母:1 2 3 5 8
    public static void main(String[] args) {
        double result = countItem();
        System.out.println("前20项之和:" + result);
    }

    public static double countItem(){
        double sum = 0;
        double a = 2;
        double b = 1;
        for (int i = 1; i < 20; i++) {
            sum += a / b;
            double temp = a;
            a = a + b;
            b = temp;
//            System.out.println(sum);
        }
        return sum;
    }
}

结果:

30. 求第n项的斐波那契数列的值,f(n) = f(n-1) + f(n-2)

使用递归和循环

import java.util.Scanner;

public class RecursionTest1 {
    // 输入一个数n,输出斐波那契数列的第n项值

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入项数:");
        int n = scan.nextInt();

        int result = fibonacci(n);
        System.out.println(result);

        fibonacci1(n);
    }

    public static int fibonacci(int n) {
        if (n == 0) {
            return 0;
        }
        if (n == 1) {
            return 1;
        }
        return fibonacci(n - 1) + fibonacci(n - 2);
    }

    public static void fibonacci1(int n) {
        int frist = 0;
        int second = 1;
        int three = 0;
        for (int i = 2; i <= n; i++) {
            three = frist + second;
            frist = second;
            second = three;
        }
        System.out.println(three);
    }
}

结果:

31. 一个人开始上楼梯,假设这个人每一次只能上一个或者两个台阶,当他到达第n个台阶时,问:共有多少种走法?

import java.util.Scanner;

public class RecursionTest2 {
    // 输入一个上的楼梯数n,输出上楼梯的方法

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入楼梯数:");
        int n = scan.nextInt();

        int result = count(n);
        System.out.println(result);
    }

    public static int count(int n) {
        if (n == 1) {
            return 1;
        }
        if (n == 2) {
            return 2;
        }
        return count(n - 1) + count(n - 2);
    }
}

结果:

32. 不死兔子:小明今年高考,考了700,父母,给他买了一对刚刚出生小兔子,四个月后成长为成年兔子,成年后,每过一个月,假设生出一对新的小兔子,问:第n月,小明家共有多少对兔子。

public class UndeadRabbit {
    /*
    不死兔子:小明今年高考,考了700,父母,给他买了一对刚刚出生小兔子,
    四个月后成长为成年兔子,成年后,每过一个月,假设生出一对新的小兔子,
    问:第n月,小明家共有多少对兔子。
    */
     // 1 1 1 1  2 3 4 5  7 10 14 19  26 规律

    public static void main(String[] args) {
        int number = countRabbit(13);
        System.out.println(number);
    }

    public static int countRabbit(int month){
        if (month > 0){
            if (month < 5){
                return 1;
            }
            return countRabbit(month - 1) + countRabbit(month - 4);
        }
        return 0;
    }
}

结果:

Java程序员如今深陷技术迭代放缓与行业需求收缩的双重困境,职业发展空间正被新兴技术浪潮持续挤压。面对当前Java程序员可能面临的“发展瓶颈”或行业挑战,更积极的应对策略可以围绕技术升级、方向转型、能力拓展三个核心展开,而非被动接受“不行”的标签,通过调查对比,我发现人工智能大模型是个很好的出路。

技术升级与转型机会

  • 突破传统Java开发边界:大模型技术的普及为Java开发者提供了新的机遇,使他们能够突破传统企业级开发的局限,进入人工智能这一高增长领域。通过学习大模型集成,Java开发者可以转型为AI应用开发者,拓展职业发展空间。

  • 技术栈升级:Java社区积极拥抱大模型技术,推出了多个开源项目和框架,如Deeplearning4j、DJL(Deep Java Library)等。这些工具为Java开发者提供了丰富的资源,使他们能够更方便地构建和部署基于大模型的应用。

发挥Java在企业级应用中的优势

  • 稳定性与可靠性:Java作为企业级应用的主流语言,其稳定性和可靠性在大模型应用中同样得到体现。Java的强类型系统和严谨的工程化特性,在构建可靠的大模型应用时提供了额外保障。

  • 跨平台性:Java的“一次编写,到处运行”特性使其能够轻松部署到不同操作系统和硬件环境中。这一特性在大型模型的部署和集成中尤为重要,可以降低部署复杂性和成本。

  • 多线程处理能力:Java强大的多线程处理能力特别适合大模型的推理部署场景,可以高效处理并发请求,提升系统性能。

说真的,这两年看着身边一个个搞Java、C++、前端、数据、架构的开始卷大模型,挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis,稳稳当当过日子。

结果GPT、DeepSeek火了之后,整条线上的人都开始有点慌了,大家都在想:“我是不是要学大模型,不然这饭碗还能保多久?”

先给出最直接的答案:一定要把现有的技术和大模型结合起来,而不是抛弃你们现有技术!掌握AI能力的Java工程师比纯Java岗要吃香的多。

即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地!大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇!

如何学习AGI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版优快云大礼包:《AGI大模型学习资源包》免费分享**

一、2025最新大模型学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:AI大模型时代的华丽登场

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。

L2级别:AI大模型RAG应用开发工程

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3级别:大模型Agent应用架构进阶实践

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。

L4级别:大模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

三、大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

四、大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版优快云大礼包:《AGI大模型学习资源包》免费分享

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值