当前位置: 首页 > article >正文

Java基础第四天(实训学习整理资料(四)Java中的方法(函数))

一、定义

方法也叫代码块,用于实现功能代码的封装,方便调用。主要目的是实现代码复用

二、方法和函数的关系

方法:(面向对象)在类中定义的成员。(成员方法)属于类创建出的对象的功能。

函数:(面向过程)

三、定义方法

权限修饰符 其他修饰符 返回值类型 方法名(参数列表){

//方法体

}

调用方法:

通过类调用: 类.方法名(参数列表);

通过对象调用:对象.方法名(参数列表);

注意事项:

1、方法允许有多参或无参

2、方法定义时的参数列表称为形式参数,调用时称为实际参数。

3、方法名称+参数列表构成了方法签名

4、方法名称使用小驼峰命名法,函数的名称一般使用下划线

5、在方法中可以使用return表示结束当前方法的执行,如果在return之后有值,则表示结束方法并返回结果。

6、如果方法没有返回值,则返回值类型应该设置为void

四、方法的重载

在同一个类中,如果出现多个方法名称相同,但是参数列表不同,这种方法称为方法重载

所谓参数列表不同指的是参数个数和参数类型不同。

方法的重载在多态特性中是一种编译时多态。

五、方法递归

特点:

1、自己调用自己

2、方法递归必须有结束条件

注意:如果方法递归层数过多可能会导致栈溢出的错误

StackOverflowError

六、方法的参数

方法的参数也属于局部变量

如果参数传递的是基础类型,则相当于传的是数据的副本(值传递)

如果参数传递的是引用类型,则传递的是引用地址(引用传递)

七、综合练习题

1、在控制台中打印9*9乘法表
    2、定义一个方法,判断输入的数是否为质数,是则返回true,否则返回false。
    3、哥德巴赫猜想:任何一个大于等于6的偶数都可以分解为两个质数之和。
    即:输入一个大于等于6的数,在控制台打印两个质数。结果如下:
    ​    6 = 3 + 3
    ​    8 = 3 + 5
    ​    16 = 3 + 13
    ​    16 = 5 + 11
    ​    18 = 5 + 13
    ​    18 = 7 + 11
    
    4、判断一个3位整数是否为回文数(正数和倒数值相等),例如:121是回文数,122不是回文数。
    5、亲密数:如果A的所有因子之和(含1而不含本身)等于B,而且B的所有因子之和
    (含1而不含本身)等于A,那么A/B称之为一对亲密数。要求:输出3000以内的所有亲密数。
    6、读入一个表示年份的整数,判断这一年是否是闰年。如何判断
        一个年份是否是闰年:
        1. 如果这个年份能够被4 整除,且不能被100 整除,则这一年是闰年。例
        如,1996 年是闰年,而相应的,1993 年就不是闰年。
        2. 如果这个年份能够被100 整除,则这个数必须要能被400 整除,才是闰
        年。例如,2000 年是闰年,1900 年不是闰年。
    7、读入一个三位数,计算其各位数字之和。例如:123各位数字之和为6

public class Demo04PMtool {
    /**+
     * 求三位数相加的和
     * @param number5
     * @return
     */
    public static int Demo04Tool(int number5) {
        int sum = 0;
        while (number5 > 0) {
            sum += number5 % 10; // 取出最低位的数字
            number5 /= 10; // 移除最低位的数字
        }
        return sum;
    }


    /**
     * 亲密数
     * @param
     * @param
     */
    public static int findPerfectNumbers(int a) {
        int sum = 0;
        for (int i = 1; i < a; i++) {
            if (a % i == 0) {
                sum += i;
            }
        }
        return sum;
    }
    public static void findPerfectNum(){

        for (int i = 0; i <= 3000; i++) {
            if (findPerfectNumbers(findPerfectNumbers(i)) == i && findPerfectNumbers(i) < i) {
                System.out.println("亲密数对:(" + i + ", " + findPerfectNumbers(i) + ")");
            }
        }

    }







    /**
     *回文数
     */
    public static boolean isPalindrome(int x) {
        // 负数和10的倍数不是回文数
        if (x < 0 || (x != 0 && x % 10 == 0)) {
            return false;
        }

        int reversednum = 0;
        while (x > reversednum) {
            reversednum = reversednum * 10 + x % 10;
            x /= 10;
        }

        return x == reversednum || x == reversednum / 10;
    }


    /**
     * 哥德巴赫猜想
     */
    public static boolean isPrime(int n) {
        if (n <= 1) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;

    }
}
import java.util.Scanner;

import static cn.hxzy.pro.Demo04PMtool.*;

public class Demo04PM {

    public static void main(String[] args) {
        Scanner num2 = new Scanner(System.in);
int num3;

        do {
            System.out.println("请输入要执行的序号:" + "\n" + "\t" + "1:进入系统选择" + "\n" + "\t" + "2:退出系统");
             num3 = num2.nextInt();
            switch (num3) {
                case 2:
                    System.out.println("已退出");
                    System.exit(0);
                    break;
                case 1:
                    System.out.println("jixu");

                    Scanner input = new Scanner(System.in);
                    System.out.println("请输入要查看的题目序号:");
                    System.out.println("\t" + "1:9*9乘法表");
                    System.out.println("\t" + "2:判断质数" + "\n" + "\t" + "3:哥德巴赫猜想" + "\n" + "\t" + "4:回文数" + "\n" + "\t" + "5:亲密数" + "\n" + "\t" + "6:判断闰年" + "\n" + "\t" + "7:计算和");

                    int num = input.nextInt();
                    if (num <= 0) {
                        System.out.println("请重新输入一个正确的题目序号!");
                    }


//用扫描仪接收一个数字
                    Scanner sc = new Scanner(System.in);
                    //提示用户输入一个数字
                    System.out.println("请输入一个整数:");
                    int number = sc.nextInt();

                    /**
                     * 9*9乘法表
                     */
                    switch (num) {
                        case 1:
                            for (int i = 1; i <= 9; i++) {
                                for (int j = 1; j <= i; j++) {
                                    System.out.print(i + "*" + j + "=" + (i * j) + "\t");
                                }
                                System.out.println();
                            }
                            break;

                        case 2:
                            /**
                             *判断是否为质数
                             */

                            //假设每一个数都是质数
                            boolean flag = true;
                            //2是最小的质数
                            if (number <= 1) {
                                flag = false;
                            }
                            for (int i = 2; i < number; i++) {
                                //判断i是否能够被num整除
                                if (number % i == 0) {
                                    //如果被num整除,那么就不是质数
                                    flag = false;
                                    break;
                                }
                            }
                            if (flag == true) {
                                System.out.println("true" + number + "是质数");
                            } else {
                                System.out.println("false" + number + "不是质数");
                            }
                            break;


                        /**
                         * 哥德巴赫猜想
                         */
                        case 3:
                            if (number < 6 || number % 2 != 0) {
                                System.out.println("请输入一个大于6的偶数!");

                            } else {
                                for (int i = 2; i < number; i++) {
                                    int b = number - i;
                                    if (isPrime(i) && isPrime(b)) {

                                        System.out.println(number + "=" + i + "+" + b);

                                    }
                                }
                            }


                            break;

                        /**
                         * 回文数
                         */
                        case 4:

                            System.out.println(isPalindrome(number));
                            break;

                        /**
                         * 亲密数
                         */
                        case 5:
                            if (number > 3000 || number <= 0) {
                                System.out.println("请输入1-3000以内的整数");
                            } else {
                                for (int i = 0; i <= number; i++) {
                                    if (findPerfectNumbers(findPerfectNumbers(i)) == i && findPerfectNumbers(i) < i) {
                                        System.out.println("亲密数对:(" + i + ", " + findPerfectNumbers(i) + ")");
                                    }
                                }
                            }
                            break;


                        /**
                         * 判断闰年
                         */
                        case 6:
                            if (number % 4 == 0 && number % 100 != 0 || number % 400 == 0) {
                                System.out.println(number + "是闰年");
                            } else
                                System.out.println(number + "是平年");
                            break;

                        /**
                         * 三位数之和
                         */
                        case 7:
                            if (number > 999 || number < 100) {
                                System.out.println("请输入一个三位数的正整数");
                            } else {
                                int sum = 0;
                                while (number > 0) {
                                    sum += number % 10; // 取出最低位的数字
                                    number /= 10; // 移除最低位的数字
                                }
                                sum = sum + number;
                                System.out.println("各位数字之和为:" + sum);
                            }
                            break;
                        default:
                            System.out.println("选择无效,请重新输入");
                            break;
                    }

                    break;
                default:
                    System.out.println("选择无效,请重新输入");
                    break;
            }
        }while (num3!=2);
    }
}


http://www.kler.cn/news/366488.html

相关文章:

  • VUE前端按钮添加遮罩层
  • 雷赛L6N伺服驱动器基本参数设置——EtherCAT 总线型
  • 【ArcGIS微课1000例】0125:ArcGIS矢量化无法自动完成面解决方案
  • WebStorm EsLint报红色波浪线
  • 川渝地区计算机考研择校分析
  • IDEA设置JDK
  • How to install Node.js and NPM on CentOS
  • 运输层知识点汇总3
  • 【ArcGIS Pro实操第5期】全局及局部空间插值:GPI、LPI、IDW等
  • win7现在还能用吗_哪些配置的电脑还可以安装win7系统
  • 基于JSP实习管理系统【附源码】
  • 五,Linux基础环境搭建(CentOS7)- 安装Kafka
  • 【排序】4.插入排序(含优化)
  • TPLCM柔性屏自动化贴合应用
  • 算法打卡 Day43(动态规划)-背包问题 + 分割等和子集
  • 查看Chrome安装路
  • IDEA项目代码报红,但可以正常编译运行
  • #HarmonyOS:页面和自定义组件生命周期
  • 一站式AI自动化剪辑 内置多种功能 永久免费
  • UI自动化测试实战
  • 使用docker build自制flink镜像供k8s使用
  • 7. 配置
  • 用更多的钱买电脑而不是手机
  • 【pytest学习】pytest.main()
  • 数据库的CURD【MySql】
  • HttpContext模块 --- http上下文模块