java方法中参数传递与随机点名器库存管理案例
Posted 晚来天欲雪能饮一杯无
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java方法中参数传递与随机点名器库存管理案例相关的知识,希望对你有一定的参考价值。
一 参数传递
1.定义:
参数传递,可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,
这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。这种传递方式,我
们称为参数传递。
定义方法时,参数列表中的变量,我们称为形式参数
调用方法时,传入给方法的数值,我们称为实际参数
2.举例明确参数传递过程
例1:
public class ArgumentsDemo01 { public static void main(String[] args) { int a=5; int b=10; change(a, b);//调用方法时,传入的数值称为实际参数 System.out.println("a=" + a); System.out.println("b=" + b); } public static void change(int a, int b){//方法中指定的多个参数称为形式参数 a=200; b=500; } }
例2:
public class ArgumentsDemo02 { public static void main(String[] args) { int[] arr = { 1, 2, 3 }; change(arr);// 调用方法时,传入的数值称为实际参数 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } public static void change(int[] arr) {// 方法中指定的多个参数称为形式参数 for (int i = 0; i < arr.length; i++) { arr[i] *= 2; } } }
3.参数传递内存图解
4.结论:
当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际参数不影响
当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响
二 随机点名器案例
1.需求:
随机点名器,即在全班同学中随机的打印出一名同学名字。
要做的随机点名器,它具备以下3个内容:
存储所有同学姓名
总览全班同学姓名
随机点名其中一人,打印到控制台
2.需求分析
在全班同学中随机的打印出一名同学名字。
我们对本案例进行分析,得出如下分析结果:
1.存储全班同学名字
2.打印全班同学每一个人的名字
3.在班级总人数范围内,随机产生一个随机数,查找该随机数所对应的同学名字
该案例须有以下3个内容:
存储所有同学姓名
总览全班同学姓名
随机点名其中一人,打印到控`制台
随机点名器明确地分为了三个功能。如果将多个独立功能的代码写到一起,则代码相对冗长,我们可以
针对不同的功能可以将其封装到一个方法中,将完整独立的功能分离出来。而在存储同学姓名时,如果对每
一个同学都定义一个变量进行姓名存储,则会出现过多孤立的变量,很难一次性将全部数据持有。此时,我们
可以使用数组解决多个数据的存储问题。
3.代码编写:
import java.util.Random; class demo03 { public static void main(String[] args) { String[] arr = new String[4]; save(arr); look(arr); getName(arr); } //储存全班同学姓名 public static void save(String[] arr){ arr[0]="张三"; arr[1]="李四"; arr[2]="王五"; arr[3]="赵六"; } //总览全班同学姓名 public static void look(String[] brr){ for (int i=0;i<brr.length ;i++ ){ System.out.print(brr[i]+" "); } System.out.println(); } //随机点名 public static void getName(String[] arr){ Random ra = new Random(); int a = ra.nextInt(arr.length); System.out.println(arr[a]); } }
三 库存管理案例
1.需求:
清单顶部为固定的数据,直接打印即可
清单中部为商品,为变化的数据,需要记录商品信息后,打印
经过观察,我们确定一项商品应该有如下几个属性:
品牌型号: 即商品名称,String型
尺寸:物品大小,double型
价格:物品单价,double型
配置:这一项为每种商品的配置信息,String型
库存数:这一项为每种商品的库存个数,int型
清单底部包含了统计操作,需经过计算后,打印
我们发现两个单独的可变化量
总库存数:所有商品总个数,int型
库存商品总金额:所有商品金额,double型
进行业务逻辑的封装。
打印库存清单功能
库存商品数量修改功能
退出程序功能
2.需求分析
管理员能够进行的操作有3项(查看、修改、退出),我们可以采用(switch)菜单的方式来完成。
-------------库存管理------------
1.查看库存清单
2.修改商品库存数量
3.退出
请输入要执行的操作序号:
每一项功能操作,我们采用方法进行封装,这样,可使程序的可读性增强。
选择“1.查看库存清单”功能,则控制台打印库存清单
选择“2.修改商品库存数量”功能,则对每种商品库存数进行更新
选择“3.退出”功能,则退出库存管理,程序结束
3.代码:
import java.io.*; import java.util.Scanner; import java.util.ArrayList; class HomeWork0630 { public static void main(String[] args)throws IOException { menu(); } public static void show(){ System.out.println("------库存管理------"); System.out.println("1.查看库存清单"); System.out.println("2.修改商品库存数量"); System.out.println("3.退出"); System.out.println("请输入要执行的操作序号:"); } public static void menu()throws IOException{ Scanner sc = new Scanner(System.in); ArrayList<String> brand =new ArrayList<String>(); ArrayList<Double> sizee =new ArrayList<Double>(); ArrayList<Double> price =new ArrayList<Double>(); ArrayList<Integer> num =new ArrayList<Integer>(); brand.add("MacBookAir"); brand.add("ThinkpadT450"); brand.add("ASUS-FL5800"); sizee.add(13.3); sizee.add(14.0); sizee.add(15.6); price.add(6988.88); price.add(5999.99); price.add(4999.5); num.add(5); num.add(10); num.add(18); while(true){ show(); int s = sc.nextInt(); switch(s){ case 1: look(brand,sizee,price,num); break; case 2: change(brand,num); break; case 3: return; default: System.out.println("输入有误请重新输入!"); } } } public static void look(ArrayList<String> brand,ArrayList<Double> sizee,ArrayList<Double> price, ArrayList<Integer> num)throws IOException{ System.out.println("----------商城库存清单----------"); System.out.println("品牌型号\\t尺寸\\t价格\\t库存数"); for (int i=0;i<brand.size() ;i++ ){ System.out.println(brand.get(i)+"\\t"+sizee.get(i)+"\\t"+price.get(i)+"\\t"+num.get(i)); } System.out.println("--------------------------------"); int sum = 0; for (int i = 0;i<brand.size() ;i++ ){ sum+=num.get(i); } System.out.println("总库存数:"+sum); double sum2 = 0; for (int i = 0;i<brand.size() ;i++ ){ sum2+=num.get(i)*price.get(i); } System.out.println("库存商品总金额:"+sum2); System.out.println("输入回车键返回主菜单"); if(new InputStreamReader(System.in).read() == 13){ return; } } public static void change(ArrayList<String> brand,ArrayList<Integer> num){ Scanner sca = new Scanner(System.in); while(true){ System.out.println("-------------库存表-------------"); System.out.println("序号\\t品牌型号\\t库存数"); for (int i=0;i<brand.size() ;i++ ){ System.out.println(i+1+"\\t"+brand.get(i)+"\\t"+num.get(i)); } System.out.println("--------------------------------"); System.out.println("请根据上表输入需要改库存商品的序号,按0返回主界面:"); int s = sca.nextInt(); int num1=0; if ((s-1)<brand.size()&&s>0){ System.out.println("请输入修改后的内存数:"); num1=sca.nextInt(); num.set(s-1,num1); System.out.println("修改成功!结果为:"); System.out.println("-------------库存表-------------"); System.out.println("序号\\t品牌型号\\t库存数"); for (int i=0;i<brand.size() ;i++ ){ System.out.println(i+1+"\\t"+brand.get(i)+"\\t"+num.get(i)); } System.out.println("--------------------------------"); while(true){ System.out.println("是否继续修改:按1继续,按0返回主菜单"); int b = sca.nextInt(); if (b==1){ break; }else if(b==0){ return; }else{ System.out.println("您的输入有误请重新输入!"); } } }else if(s==0){ return; }else{ System.out.println("您的输入有误请重新输入!"); } } } }
以上是关于java方法中参数传递与随机点名器库存管理案例的主要内容,如果未能解决你的问题,请参考以下文章