zoukankan      html  css  js  c++  java
  • 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("品牌型号	尺寸	价格	库存数");
                for (int i=0;i<brand.size() ;i++ ){
                    System.out.println(brand.get(i)+"	"+sizee.get(i)+"	"+price.get(i)+"	"+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("序号	品牌型号	库存数");
                    for (int i=0;i<brand.size() ;i++ ){
                        System.out.println(i+1+"	"+brand.get(i)+"	"+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("序号	品牌型号	库存数");
                            for (int i=0;i<brand.size() ;i++ ){
                            System.out.println(i+1+"	"+brand.get(i)+"	"+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("您的输入有误请重新输入!");        
                        }
                    }        
            }
    }

     

  • 相关阅读:
    js 线程机制与事件处理机制
    js 对象高级
    js 函数高级
    js 基础总结
    JSON
    js BOM
    js DOM
    正则表达式
    splice()、push()、pop()、unshift()、pop()、reverse()等数组响应式方法
    Centos下执行make时出现mysql.h: No such file or directory
  • 原文地址:https://www.cnblogs.com/jiejava/p/13217260.html
Copyright © 2011-2022 走看看