方法定义
- 方法:
一段具有独立功能的代码块,不调用就不执行。可以提高代码的复用性 - 方法需要定义在类中方法外,方法可以在方法中调用,但不能嵌套定义
- 定义方法前首先要明确它的返回值类型与形参的个数和类型
- 方法被调用时会进入栈中,这一过程叫做压栈,调用完后方法弹栈释放,遵循栈的先进后出原则
方法的定义格式
public static 返回值类型 方法名(形参){ //若没有返回值,通常写为public static void 方法名(形参)
功能代码;
return 返回值;
}
- 方法的三种调用:
//没有返回值的方法
方法名(参数);
//有返回值
//直接打印返回值
System.out.println(方法名(参数));
//用一个变量接收返回值
返回值类型 变量名 = 方法名(参数);
方法的重载
- 若两个或多个方法方法名相同,但参数类型不同或参数个数不同或参数顺序不同,我们称这构成了方法的重载
- 方法的参数传递
传递基本类型,记录的为"具体数值",形参的改变,不会影响实参
传递引用类型,记录的为"地址值",形参的改变,会影响实参
例:
//接收两个int类型的值并返回除商
public static int division(int num1, int num2){
return num1 / num2;
}
//接收两个double类型的值并返回除商
public static double division(double num1, double num2){
return num1 / num2;
}
//接收三个double类型的值并返回除商
public static double division(double num1, double num2, double num3){
return num1 / num2 / num3;
}
循环控制语句
- continue:
跳过本次循环,继续下次循环 - break:
跳出当前循环或指定循环 - return
使方法弹栈,结束当前方法
练习
- 猜字谜小游戏,设置1-100,1-1000,1-10000四种难度,以及退出选项
在猜数字的过程中也可随时返回难度选择界面
代码:
import java.util.Random;
import java.util.Scanner;
public class GuessNum {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//给while循环起一个名字lone
lone:
while(true){
//提示用户并录入数据
System.out.println("欢迎来到猜数字小游戏");
System.out.println("1. 1-100难度");
System.out.println("2. 1-1000难度");
System.out.println("3. 1-10000难度");
System.out.println("4. 退出游戏");
int num1 = sc.nextInt();
//选择难度并调用numGuess方法
switch (num1){
case 1:
numGuess(1,100);
break;
case 2:
numGuess(1,1000);
break;
case 3:
numGuess(1,10000);
break;
case 4:
System.out.println("bye~");
break lone; //跳出lone,即最外层while循环
default:
System.out.println("请输入正确的选项");
break;
}
}
}
//数字猜谜小游戏方法
public static void numGuess(int num1, int num2){
//创建对象
Scanner sc = new Scanner(System.in);
Random r = new Random();
int num4 = r.nextInt(num2) + 1;
//欢迎欢迎
System.out.println("欢迎选择难度为" + num1 + "到" + num2 + "猜数字小游戏,游戏开始!(输入10001回到初始选择界面)");
while(true){
//让用户输入一个整数
System.out.print("请输入你猜的结果:");
int num3 = sc.nextInt();
//判断数据合法性
if ((num3 < num1 || num3 > num2) && num3 != 10001){
System.out.println("请输入正确的数字!");
//判断是否退出
}else if (num3 == 10001){
break;
}else{ //判断猜大猜小或猜中,猜中则提示并返回初始界面
if (num3 > num4){
System.out.println("猜大了");
}else if (num3 < num4){
System.out.println("猜小了");
}else{
System.out.println("恭喜你猜中了");
break;
}
}
}
}
}
- 定义两个方法,方法1可以求出一个整数数组内的最大值max与最小值min,方法2则由用户定义一个任意长度的数组并使用键盘录入数组的值,调用方法,求出用户自定义长度与元素的数组的最大值与最小值并打印
代码:
import java.util.Scanner;
//定义一个方法, 可以同时获取一个int类型数组的max和min
public class MinMax {
public static void main(String[] args) {
//c
//提示用户并使用creat方法创建一个整数数组
System.out.println("请输入数组长度:");
//创建对象
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int[] arr = creat(num1);
//使用min_Max输出最大最小值
System.out.println("min:" + minMax(arr)[0]);
System.out.println("max:" + minMax(arr)[1]);
}
//定义方法minMax,接收一个int数组,返回值为一个数组
public static int[] minMax(int[] arr){
//定义两个变量接收最值
int min = arr[0];
int max = arr[0];
//遍历并比较取出最值
for (int i = 1; i < arr.length; i++) {
if (arr [i] < min){
min = arr[i];
}else if (arr[i] > max){
max = arr[i];
}
}
int[] brr = {min, max};
return brr;
}
//来写一个随意长度定义且赋值的数组方法吧
public static int[] creat(int ber){
//定义动态数组
int[] arr = new int[ber];
//创建对象
Scanner sc = new Scanner(System.in);
//提示并接收数据
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第" + (i + 1) + "个数");
arr[i] = sc.nextInt();
}
return arr;
}
}