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 的时候, 程序结束
实现提示:
- 将需要操作的多个成绩, 存入一个数组中
- 使用输出语句构建出菜单
- 利用 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);
}
}
-
- 到此教程就结束了.
- 转载: 请附上本文链接.
- 如果文章对你有帮助, 可以点赞收藏一下, 以防下次需要可以快速找到.