java基础-5 方法

1.方法

1.1 方法的语法格式

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){

执行语句

………

return 返回值;

}

public class MethodDemo01 {
	public static void main(String[] args) {
		int area = getArea(3, 5); // 调用 getArea方法
		System.out.println(" The area is " + area);
	}

	// 下面定义了一个求矩形面积的方法,接收两个参数,其中x为高,y为宽
	public static int getArea(int x, int y) {
		int temp = x * y; // 使用变量temp记住运算结果
		return temp; // 将变量temp的值返回
	}
}

1.2 方法调用图解

1.2方法定义练习

分别定义如下方法:

定义无返回值无参数方法,如打印3行,每行3*号的矩形

定义有返回值无参数方法,如键盘录入得到一个整数

定义无返回值有参数方法,如打印指定M行,每行N*号的矩形

定义有返回值有参数方法,如求三个数的平均值

l无返回值无参数方法,如打印3行,每行3个*号的矩形

public static void printRect{
	// 打印3行星
	for(
	int i = 0;i<3;i++)
	{
		// System.out.println("***"); 相当于是打印3颗星,换行
		// 每行打印3颗星
		for (int j = 0; j < 3; j++) {
			System.out.print("*"); // ***
		}
		System.out.println();
	}
}

l有返回值无参数方法,如键盘录入得到一个整数

public static int getNumber(){
	Scanner sc = new Scanner(System.in);
	int number = sc.nextInt();return number;
}

l无返回值有参数方法,如打印指定M行,每行N个*号的矩形

public static void printRect2(int m, int n) {
		// 打印M行星
		for (int i = 0; i < m; i++) {
			// 每行中打印N颗星
			for (int j = 0; j < n; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}

有返回值有参数方法,如求三个数的平均值

public static double getAvg(double a, double b, double c) {
		double result = (a + b + c) / 3;
		return result;
	}

1.3 方法的重载

Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。

下面的三个方法互为重载关系

lpublic static int add(int x,int y) {逻辑} //两个整数加法

lpublic static int add(int x,int y,int z) {逻辑} //三个整数加法

lpublic static int add(double x,double y) {逻辑} //两个小数加法


注意事项:

l重载方法参数必须不同:

参数个数不同,如method(int x)与method(int x,int y)不同

参数类型不同,如method(int x)与method(double x)不同g

参数顺序不同,如method(int x,double y)与method(double x,int y)不同

l重载只与方法名与参数类型相关与返回值无关

如void method(int x)与int method(int y)不是方法重载,不能同时存在

l重载与具体的变量标识符无关

如method(int x)与method(int y)不是方法重载,不能同时存在


1.4参数传递图解与结论

 

通过上面的两段程序可以得出如下结论:

l当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际参数不影响

l当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响


2 随机点名器案例

在全班同学中随机的打印出一名同学名字。

我们对本案例进行分析,得出如下分析结果:

1.存储全班同学名字

2.打印全班同学每一个人的名字

3.在班级总人数范围内,随机产生一个随机数,查找该随机数所对应的同学名字

该案例须有以下3个内容:

存储所有同学姓名

总览全班同学姓名

随机点名其中一人,打印到控制台

import java.util.Random;
import java.util.Scanner;

public class CallName_1 {

	/*
	 * public static void main(String[] args) { // 存储姓名,姓名存储到数组中 // 数组存储姓名,String
	 * String[] names= {"张三","李四","王五","we","hsaihau"};
	 * 
	 * //预览:遍历数组,打印所有姓名 for (int i=0;i<names.length; i++) {
	 * System.out.println(names[i]); } System.out.println("=====================");
	 * 
	 * Random ran = new Random(); // 随机数,范围0-数组的最大索引 int index =
	 * ran.nextInt(names.length); System.out.println(names[index]);
	 * 
	 * }
	 */

	public static void main(String[] args) {
		System.out.println("--------随机点名器--------");
		// 创建一个存储多个同学名字的容器(数组)
		String[] students = new String[3];
		/*
		 * 1.存储全班同学名字
		 */
		addStudentName(students);
		/*
		 * 2.打印全班同学每一个人的名字
		 */
		printStudentName(students);
		/*
		 * 3.获取随机点名到的学生姓名,并打印
		 */
		String randomName = randomStudentName(students);
		System.out.println("被点到名的同学是 :" + randomName);
	}

	public static void addStudentName(String[] names) {
		// 键盘输入多个同学名字存储到容器中
		Scanner sc = new Scanner(System.in);
		for (int i = 0; i < names.length; i++) {
			System.out.println("存储第" + i + "个名称:");
			names[i] = sc.next();
		}
	}

	/**
	 * 2打印全班同学每一个人的名字
	 */
	public static void printStudentName(String[] names) {
		// 遍历数组,得到每个同学名字
		for (int i = 0; i < names.length; i++) {
			String name = names[i];
			// 打印同学名字
			System.out.println("第" + i + "个学生名称:" + name);
		}
	}

	/**
	 * 3.在班级总人数范围内,随机产生一个随机数,返回随机数位置上的学生姓名
	 */
	public static String randomStudentName(String[] names) {
		// 根据数组长度,获取随机索引
		int index = new Random().nextInt(names.length);
		// 通过随机索引从数组中获取名称
		// String name = names[index];
		// 返回随机点到的名称
		return names[index];
	}
}

3 库存管理案例

管理员能够进行的操作有3项(查看、修改、退出),我们可以采用(switch)菜单的方式来完成。

-------------库存管理------------

1.查看库存清单

2.修改商品库存数量

3.退出

请输入要执行的操作序号:

每一项功能操作,我们采用方法进行封装,这样,可使程序的可读性增强。

选择“1.查看库存清单功能,则控制台打印库存清单

选择“2.修改商品库存数量功能,则对每种商品库存数进行更新

选择“3.退出功能,则退出库存管理,程序结束

import java.util.Scanner;
/*
 * 1.查看库存清单
 * 2.修改商品库存数量
 * 3.退出
 */
public class shopp {

	public static void main(String[] args) {
		// 使用数组,保存商品信息
		// 品名,尺寸,价格,库存数
		String[] brand = new String[] { "Macbook", "ThinkpadT450" };
		double[] size = new double[] { 13.3, 15.6 };
		double[] price = new double[] { 9998.9, 7888, 6 };
		int[] count = new int[] { 0, 0 };
		while (true) {
			int choose = chooseFunction();
			switch (choose) {
			case 1:
				printStore(brand, size, price, count);
				break;
			case 2:
				update(brand, count);
				break;
			case 3:
				exit();
				return;

			default:
				System.out.println("功能选择有误,请输入正确的功能序号!");
				break;
			}
		}
	}

	/*
	 * 修改所有商品的库存 返回值没有 参数 品名,库存数
	 */
	public static void update(String[] brand, int[] count) {
		// 遍历数组,遍历到一个,修改一个
		Scanner sc = new Scanner(System.in);

		for (int i = 0; i < brand.length; i++) {
			System.out.println("请输入" + brand[i] + "的库存");
			int newCount = sc.nextInt();
			count[i] = newCount;
		}
		// return count;
	}

	/*
	 * 打印库存清单,遍历 返回值没有 数组
	 * 
	 */
	public static void printStore(String[] brand, double[] size, double[] price, int[] count) {
		// 列表顶部
		System.out.println("----------------查看库存清单-------------");
		System.out.println("品牌型号		尺寸	价格	库存数");
		int totalCount = 0;
		double totalMoney = 0.0;
		for (int i = 0; i < brand.length; i++) {
			System.out.println(brand[i] + "         " + size[i] + "    " + price[i] + "  " + count[i]);
			totalCount += count[i];
			totalMoney += count[i] * price[i];
		}

		// 列表底部
		System.out.println("--------------------------------------");
		System.out.println("总库存数:" + totalCount);
		System.out.println("库存商品总金额:" + totalMoney);
	}

	/*
	 * 选择功能序号
	 *
	 */
	public static int chooseFunction() {
		System.out.println("-------------库存管理------------");
		System.out.println("1.查看库存清单");
		System.out.println("2.修改商品库存数量");
		System.out.println("3.退出");
		System.out.println("请输入要执行的操作序号:");
		// 接收键盘输入的功能选项序号
		Scanner sc = new Scanner(System.in);
		int chooseNumber = sc.nextInt();
		return chooseNumber;
	}

	public static void exit() {
		System.out.println("----------------退出---------------");
		System.out.println("您已退出系统");
	}

}









  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值