5. Java方法(训练题)

5. Java方法(训练题)

  • 学编程最重要的是思维逻辑的训练, 而思维逻辑训练最终体现就是足够量的代码.

一、简答题

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

答: 当某一些代码需要在多个地方重复使用, 就可以把这些代码打包形成一个方法.
好处: 代码的复用性高, 代码可优化性更高


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

//答: 
public static 返回类型 方法名(参数){
	//方法体
	return 数值;
}

返回类型可以有返回值, 也可以没有返回值, 当有返回值时数值要和定义的类型要相同

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

答: 
形参: 是在方法中临时存储, 传入方法的变量.
实参: 是实际的数值.

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

答: 
当需要向方法中传入数值的时候, 就需要声明变量
当需要方法需要返回处理好的数值时,就需要声明返回值类型

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

//答:
带返回值的调用: 赋值调用, 输出调用
不带返回值的调用: 直接调用

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、正确的方法重载, 需要满足哪些条件呢 ?

答: 
1. 具有相同的方法名
2. 参数列表可以不相同(数量, 类型, 顺序)

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
第一个10是因为, 调用int型change方法时, 并没有没有返回值, 而方法中也只是对, 形参进行了四则运算, 对main()方法中的实际参数并没有影响.

第二个10 也是因为只改变了形参的地址值

二、编程题

2.1 编程题目一

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

实现提示

  • 参数 :
  • 返回值 :
//答:
package com.itheima.lxh_homework;

/**
 * @className: TranslateOne
 * @author: LXHYouth
 * @date: 2024/3/7 17:40
 * @Version: 1.0
 * @description:
 */

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

 **实现提示**:

 * 参数 :
 * 返回值 :

 */
public class TranslateOne {
    public static void main(String[] args) {
        // 初始化三个int变量
        int a=3,b=5,c=6;
        // 直接输出调用方法
        System.out.println("最小值为: "+outputMin(a,b,c));
    }

    /*
     * @Author LXHYouth
     * @Date 17:50 2024/3/7
     * @Param [a, b, c]
     * @return int
     * @Description 判断三位int型变量的最小值
     **/
    public static int outputMin(int a,int b,int c){
        int min;
        min=a<b?a:b;
        min=min<c?min:c;
        return min;
    }

}
 

2.2 编程题目二

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

实现提示

  • 参数 :
  • 返回值 :
package com.itheima.lxh_homework;

import java.util.Random;

/**
 * @className: TranslateTwo
 * @author: LXHYouth
 * @date: 2024/3/7 17:52
 * @Version: 1.0
 * @description:
 */

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

 **实现提示**:

 * 参数 :
 * 返回值 :
 */
public class TranslateTwo {

    public static void main(String[] args) {
        int max=512, min=256;
        int[] arr=randomArr(max,min);
        System.out.print(min+"~"+max +"随机取10个数为: ");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }

    /*
     * @Author LXHYouth
     * @Date 18:05 2024/3/7
     * @Param [max, min]
     * @return int[]
     * @Description 在min~max中随机取十个数, 存储到数组并返回
     **/
    public static int[] randomArr(int max,int min){
        // 创建一个随机数对象
        Random random = new Random();
        // 创建一个长度为10的数组, 存在范围内随机取出的10个数据
        int[] arr= new int[10];
        for (int i = 0; i < arr.length; i++) {
            // 控制随机数的范围, random.nextInt(max-min+1)+min
            arr[i]=random.nextInt(max-min+1)+min;
        }
        return arr;
    }
}
 

2.3 编程题目三

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

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

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

image-20220112144912535

实现提示

  • 将需要操作的多个成绩, 存入一个数组中
  • 使用输出语句构建出菜单
  • 利用 switch 或者是 if 语句, 区分出用户输入的 1 2 3 4 5 6
  • 1 ~ 5 每一个都是一段独立的功能, 所以定义5个方法, 分别实现业务功能
  • 在用户输入 1 ~ 5 的时候, 调用对应的方法
:
package com.itheima.lxh_homework;

import java.util.Scanner;

/**
 * @className: TranslateThree
 * @author: LXHYouth
 * @date: 2024/3/7 18:13
 * @Version: 1.0
 * @description:
 */

public class TranslateThree {
    public static void main(String[] args) {
        // 创建一个数组存储学生成绩
        int[] studentScoresArr = {10, 20, 30, 40, 50, 60, 70, 80};
        // 定义一个变量存储操作数
        int inputNumber = 0;
        // 创建一个扫描器对象
        Scanner scanner = new Scanner(System.in);
        // 使用死循环, 是键盘可以一直输入
        while (inputNumber != 6) {
            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("-----------------------");
            // 接收键盘输入的操作数
            inputNumber = scanner.nextInt();
            // 判断输入的操作数, 应调用哪个方法
            switch (inputNumber) {
                case 1:
                    scores(studentScoresArr);
                    break;
                case 2:
                    maxScore(studentScoresArr);
                    break;
                case 3:
                    minScore(studentScoresArr);
                    break;
                case 4:
                    avgScore(studentScoresArr);
                    break;
                case 5:
                    fluck(studentScoresArr);
                    break;
                case 6:
                    // 输入6时打印感谢语, 使用return退出程序
                    System.out.println("感谢你的使用, 再见!");
                    return ;
                default:
                    System.out.println("输入错误请重新输入:");
            }
        }
    }

    /*
     * @Author LXHYouth
     * @Date 20:17 2024/3/7
     * @Param [arr]
     * @return void
     * @Description 打印学生成绩
     **/
    public static void scores(int[] arr) {
        System.out.print("学生成绩为: [");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
            if(i<arr.length-1){
                System.out.print(",");
            }
        }
        System.out.println("]");
    }

    /*
     * @Author LXHYouth
     * @Date 20:18 2024/3/7
     * @Param [arr]
     * @return void
     * @Description 获取最高分
     **/
    public static void maxScore(int[] arr) {
        int  max=Integer.MIN_VALUE;
        for (int i = 0; i < arr.length; i++) {
            max=max>arr[i]?max:arr[i];
        }
        System.out.println("最高分为: "+max);
    }

    /*
     * @Author LXHYouth
     * @Date 20:18 2024/3/7
     * @Param [arr]
     * @return void
     * @Description 获取最低分
     **/
    public static void minScore(int[] arr) {
        int  min=Integer.MAX_VALUE;
        for (int i = 0; i < arr.length; i++) {
            min=min<arr[i]?min:arr[i];
        }
        System.out.println("最低分为: "+min);
    }

    /*
     * @Author LXHYouth
     * @Date 20:18 2024/3/7
     * @Param [arr]
     * @return void
     * @Description 获取全班平均成绩
     **/
    public static void avgScore(int[] arr) {
        double sum=0;
        for (int i = 0; i < arr.length; i++) {
            sum+=arr[i];
        }
        System.out.println("平均分为: "+(sum/arr.length));
    }

    /*
     * @Author LXHYouth
     * @Date 20:19 2024/3/7
     * @Param [arr]
     * @return void
     * @Description 获取班级不及格人数
     **/
    public static void fluck(int[] arr) {
        int count=0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]<60){
                count++;
            }
        }
        System.out.println("不及格人数有:"+count);
    }

}
 


  • 到此教程就结束了.
  • 转载: 请附上本文链接.
  • 如果文章对你有帮助, 可以点赞收藏一下, 以防下次需要可以快速找到.
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值