Java方法基础代码五

一、简答题

1、聊聊你对方法的理解, 以及方法可以为代码带来怎样的好处 ?

答: 
方法就是把一些代码打包起来, 用的时候就调用
提高代码复用性,提高代码的可维护性

2、方法最完整的定义格式是什么 ? 再请详细描述下

: public static void 方法名(){
    方法体
}
方法必须先定义后调用,不调用不执行
方法的定义顺序不影响执行结果,但是调用顺序影响执行结果
方法执行完毕后,会回到调用的地方,继续向下执行

3、请回答形参和实参分别指的是 ?

答: 
形参是:方法体在定义的时候的名字
实参是: 方法体被调用时的参数值

4、请回答, 你认为方法在什么时候需要声明参数, 什么时候需要声明返回值类型

答: 当方法需要接收外部传入的数据或信息时。
当方法执行完毕后需要返回一个结果给调用者时(返回值类型需要和定义的方法类型一致)。

5、请回答带返回值方法有几种调用格式, 分别是哪几种, 还有不带返回值方法的调用格式

: 
3种
    赋值调用
    直接调用
    打印输出调用
直接调用方法并接收其返回值。
    如果方法没有返回值,则可以将其返回值类型声明为void。调用不带返回值方法的方式与调用带返回值方法的第三种方式类似,但是不需要用一个变量来接收返回值,
    obj.method(argument);

6、请观察以下代码,在横线处补齐正确代码,保证可以在控制台上输出 wo ai java

public class Test08 {
    public static void main(String[] args){
	    _____①_____ print();
    }

    public __static void___②_____ print() {	
        System.out.println("wo ai java");
    }
}

7、请问, 在定义方法的时候, 多个方法之间需要保证什么关系 ? 方法的return语句下面, 还可以编写代码吗 ?

答: 
方法与方法之间是平级关系,不能嵌套定义
方法调用顺序与执行顺序无关
return(执行后)下面的代码不会被执行,不可以

8、聊聊什么是方法重载, 方法重载能带来怎样的好处呢 ?

答: 方法重载是方法名相同, 与返回值类型无关,形参列表不同(参数类型 数量  位置)
让调用者不用去记忆太多繁琐的方法名称

9、正确的方法重载, 需要满足哪些条件呢 ?

答: 
方法名(相同)和参数列表(不同),与返回值无关
形参列表不同,主要包括三个维度:类型、数量、顺序

10、我们调用方法传递实际参数的时候, 参数是基本数据类型, 和引用数据类型, 有什么不同 ?

答:  基本数据类型传递的是具体的值,  引用数据类型参数传递的是地址 

11、现有如下代码, 请分析后回答运行结果和原因

public class Test {
	public static void main(String[] args){
		int num = 10;
		change(num);
		System.out.println(num);
		
		int[] arr = {10,20,30};
		change(arr);
		System.out.println(arr[0]);
		
	}
	
	public static void change(int num){
		num = num * 100 / 20 + 30;
	}
	
	public static void change(int[] arr){
		arr = new int[]{100,200,300};
	}
}
: 10
    10
    
    方法体中定义的num的变化,影响不到主函数中定义的num
    方法体中new出来的地址为新地址,change(arr);传过去的地址并没有被使用到

二、编程题

2.1 编程题目一

需求描述:定义一个方法, 方法能够计算出三个整数的最小值,返回

实现提示

  • 参数 :
  • 返回值 :
:
public class MethodVoid {
    public static void main(String[] args) {
        int a, b, c;
        a = 1;
        b = 2;
        c = 3;
        System.out.println("求取的最小值为" + min(a, b, c));
    }

    /**
     * 采取Math方法进行运算判断两个数据的大小
     * @param a
     * @param b
     * @param c
     * @return
     */
    public static int min(int a, int b,int c) {
        //int min = Math.min(a, Math.min(b,c));
        int min = (a < b ? a : b) < c ? (a < b ? a : b) : c;
        return min;
    }
}

2.2 编程题目二

需求描述:随机产生指定范围(给定最大和最小值)的10个数,放在长度为10的数组里,并将数组返回

实现提示

  • 参数 :
  • 返回值 :
public class RanArrayr {
    public static void main(String[] args) {
        int[] arra = new int[10];
        arra = rvoid(arra);
        System.out.print("[ ");
        for (int i = 0; i < arra.length; i++) {
            if ((arra.length - 1) == i) {
                System.out.print(arra[i]);
            } else {
                System.out.print(arra[i] + ", ");
            }
        }
        System.out.print(" ]");
    }

    /*public static int[] rvoid(int[] arr) {
        Random r = new Random();
        int[] arrays = new int[10];
        for (int i = 0; i < 10; i++) {
            int num = r.nextInt(9) + 1;
            arrays[i] = num;
        }
        return arrays;
    }*/
    
    public static int[] rvoid(int min,int max) {
        Random r = new Random();
        int[] arrays = new int[10];
        for (int i = 0; i < arraays.length; i++) {
            arrays[i] = r.nextInt(max-min+1) + min;
        }
        return arrays;
    }
}


2.3 编程题目三

训练目标:能够合理的设计方法参数和返回值, 并调用方法

需求描述:模拟一个简单的考试管理系统, 已知成绩为 10, 20, 30, 40, 50, 60, 70, 80

  • 程序运行后, 展示一个菜单, 根据用户输入的选择, 程序响应不同的业务逻辑
  • 程序需要一直运行, 直到用户输入 6 的时候, 程序结束

实现提示

  • 将需要操作的多个成绩, 存入一个数组中
  • 使用输出语句构建出菜单
  • 利用 switch 或者是 if 语句, 区分出用户输入的 1 2 3 4 5 6
  • 1 ~ 5 每一个都是一段独立的功能, 所以定义5个方法, 分别实现业务功能
  • 在用户输入 1 ~ 5 的时候, 调用对应的方法
:
public class ExaminationManagementSystem {
    public static void main(String[] args) {
        //定义成绩数组
        int[] scores = {10, 20, 30, 40, 50, 60, 70, 80};
        //获取扫描器
        Scanner sc = new Scanner(System.in);
        int max = scores[0];//最高分
        int min = scores[0];//最低分
        double avg = 0;//平均分数
        int noPass = 0;//合格人数

        /*while (true) {
            if (input<=0||input>7){
                System.out.println("您录入的数字无效, 请重新录入. ");
            }else {
                break;
            }
        }*/

        while (true) {
            System.out.println("---------------------");
            System.out.println("欢迎来到黑马考试管理系统");
            System.out.println("1. 查看成绩");
            System.out.println("2. 查看最高分");
            System.out.println("3. 查看最低分");
            System.out.println("4. 查看平均分");
            System.out.println("5. 查看不及格人数");
            System.out.println("6. 退出");
            System.out.println("---------------------");
            int input = sc.nextInt();//管理系统编号录入
            switch (input) {
                case 1:
                    System.out.println("学生成绩为: ");
                    viewScore(scores);
                    break;
                case 2:
                    System.out.println("最高分为: " + viewMaxScore(scores, max));
                    break;
                case 3:
                    System.out.println("最低分为: " + viewMinScore(scores, min));
                    break;
                case 4:
                    System.out.println("平均分为: " + viewAvgScore(scores, avg));
                    break;
                case 5:
                    System.out.println("不及格人数为: " + viewnoPass(scores, noPass));
                    break;
                case 6:
                    System.exit(0);
                    break;
                default:;
            }
        }


    }

    /**
     * 求平均数
     * @param scores
     * @param avg
     * @return
     */
    private static double viewAvgScore(int[] scores, double avg) {
        int sum=scores[0];
        for (int i = 0; i < scores.length; i++) {
            sum+=scores[i];
        }
        return avg=sum/scores.length*1.0;
    }

    /**
     * 不及格人数
     * @param scores
     * @param noPass
     * @return
     */
    private static int viewnoPass(int[] scores, int noPass) {
        noPass=0;
        for (int i = 0; i < scores.length; i++) {
            if (scores[i]<60){
                noPass++;
            }
        }
        return noPass;
    }

    /**
     * 查看最低分
     * @param arr
     * @param min
     * @return
     */
    private static int viewMinScore(int[] arr, int min) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] < min) {
                min = arr[i];
            }
        }
        return min;
    }

    /**
     * 查看最高分
     *
     * @param arr
     * @param max
     */
    private static int viewMaxScore(int[] arr, int max) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    }

    /**
     * 查看成绩
     *
     * @param arr
     */
    private static void viewScore(int[] arr) {
        System.out.print("[ ");
        for (int i = 0; i < arr.length; i++) {
            if ((arr.length - 1) == i) {
                System.out.print(arr[i]);
            } else {
                System.out.print(arr[i] + ", ");
            }
        }
        System.out.print(" ]");
    }
 /*   private  static void TTL(int[] arr){
        for (int i = 0; i < arr.length; i++) {

        }
    }*/
}
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

InnovatorX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值