面向对象(2) 带参 形参与实参

21 篇文章 0 订阅
7 篇文章 0 订阅

定义带参的方法:
<访问修饰符> 返回类型 <方法名>(<形式参数列表>) {
//方法的主体
}

例如榨汁机的榨汁功能。根据不同水果榨出不同的汁
定义一个 水果参数
定义一个 汁变量来接收水果的参数
然后返回汁的值

public class ZhaZhiJi {
    public String Zhazhi(String fuit){
        String str=fuit+"汁";
        return str;
    }
}

填写测试类
调用带参数的方法
对象名.方法名(参数1, 参数2,……,参数n)

 public static void main(String[] args) {
        ZhaZhiJi zhaZhiJi=new ZhaZhiJi();
        String myfruit="香蕉";
        String string=zhaZhiJi.Zhazhi(myfruit);
        System.out.println(string);
    }
}

结果 为香蕉汁
在这里插入图片描述

带多个参数的方法
返回值类型为boolean
返回结果为 boolean类型
定义方法带有三个参数
传递也要传递三个参数
例如:

  public boolean editName(String oldname,String newname){
        boolean find=false;
        for (int i=0;i<names.length;i++){
            if (names[i]!=null&&names[i].equals(oldname)){
                names[i]=newname;
                find=true;
                break;
            }
        }
        return find;
    }
}

如果为空系统会报错,所以要加一个不为空的条件
测试类

 System.out.println("请输入要修改的名字");
        String old=input.next();
        System.out.println("请输入新名字");
        String NOW=input.next();
        boolean a=customerBiz.editCustomer(old,NOW);
        if (a){
            System.out.println("修改成功");
        }else{
            System.out.println("修改失败");
        }
        System.out.println("修改后为");
        customerBiz.showCustomer();

结果:

在这里插入图片描述
数组作为参数:
参数不为变量而是一个数组
例如求一组学生成绩的平均分最高分并按升序排列

利用return返回平均分和最高分的值

public class ScoreSOLC {
    public double avg(int []scores){
        double avg=0.0;
        int sum=0;
        for (int i=0;i<scores.length;i++){
            sum=sum+scores[i];
        }
        avg=sum/scores.length;//求平均
        return avg;
    }

最高分
可以定义max=score是[0];
循环数组如果max<scores[i]
max=scores[i]

public int max(int[] scores){
        int max=scores[0];
        for (int i=1;i<scores.length;i++){
            if (max<scores[i]){
                max=scores[i];
            }
        }
        return max;
    }

最后利用冒泡排序三步走
循环数组
数字长度-1
数组长度-1-i
交换数据

 public void sort(int []scores){
        for (int i=0;i<scores.length-1;i++){
            for (int j=0;j<scores.length-1-i;j++){
                if (scores[j]>scores[j+1]){
                    int a;
                    a=scores[j];
                    scores[j]=scores[j+1];
                    scores[j+1]=a;
                }
            }
        }
    }

编写测试类

public class test5 {
    public static void main(String[] args) {
        int[]scores={20,50,78,45,15,10};
        ScoreSOLC scoreSOLC=new ScoreSOLC();
        double avg=scoreSOLC.avg(scores);
        System.out.println(avg);
        int max=scoreSOLC.max(scores);
        System.out.println(max);
        scoreSOLC.sort(scores);
        for (int i=0;i<scores.length;i++){
            System.out.println(scores[i]);
        }
    }
}

new一个对象
定义avg 来接收 对象中的数组scores的avg方法返回的值
定义max来接收 对象中的数组scores的max方法返回的值
引用对象的sort方法
循环数组打印输出循环后的

结果:
在这里插入图片描述
对象作为参数:
参数为一个对象
数据管理的增删改查
通常数据管理的类名都以Biz为结尾
例如
StudentBiz
CustomerBiz
DishBiz等等
例如
定义一个Customer类
姓名 年龄 卡类型 性别属性
要求把属性以数组的形式保存在数组中
添加至数组中
根据姓名查找相应的对象
修改对象对应的姓名
显示数组

Customer类:

public class Customer {
    String name;
    int age;
    String sex;
    int num;
    String cardType;
    public void show(){
        System.out.println(num+"\t"+name+"\t"+age+"\t"+sex+"\t"+cardType);
    }
}

show方法用来显示数据

CustomerBiz类;
首先用Customer类创建一个数组customers
然后编写第一个增加方法
参数为Customer类 参数要与数组类型一致,否则会报错
例如数组为Customer类,参数为String类,类型不一致,系统会报错
循环数组
因为添加数据,所以要在数组中的空位添加
如果 为空 则把添加数据的参数赋给数组中的空位跳出循环

 public void addCustomer(Customer cust){
        for (int i=0;i<customers.length;i++){
            if (customers[i]==null){
                customers[i]=cust;
                break;
            }//添加数据
        }
    }

显示数组
因为显示方法所以这里可以不设置参数
循环数组,因为要显示数组中的值,所以空的地方不显示
如果不为空则打印输出数组

public void showCustomer(){
        for (int i=0;i<customers.length;i++){
            Customer customer=customers[i];
            if (customer!=null){
                customer.show();
            }
        }
    }

这里引用的是Customer的show方法

查找数据:
方法为定义数组的类型,类型要一致
所以方法为Customer 参数是根据什么变量来查询所对应的对象。
例如根据name 查询就是 String name
循环数组 定义一个Customer类的变量customer来接受数组中的元素customers[i]因为查询带值的元素,所以要不为空
如果不为空并且customer的name属性等于定义方法的的参数name
返回customer的值,否则返回空

public Customer getInfo(String name){
        for (int i=0;i<customers.length;i++){
            Customer customer=customers[i];
            if (customer!=null&&customer.name.equals(name)){
                return  customer;
            }
        }
        return null;
    }

修改
定义一个boolean类型的方法
定义一个boolean 类型的变量a=false
参数为要修改的和修改后的属性变量。
例如修改name
因为这里利用的是多参,测试类中也要返回对应类型的多参
(String oldname,String newname)
循环数组
定义一个 Customer类的变量来接受数组元素customer[i]的值,
如果不为空且customer中的name属性等于定义方法中的oldname属性变量,
则customer中的name属性变量等于定义方法中的newname数形变量
a=true
跳出循环
返回a的值

  public boolean editCustomer(String oldname,String newname){
        boolean find=false;
        for (int i=0;i<customers.length;i++){
            Customer customer=customers[i];
            if (customer!=null&&customer.name.equals(oldname)){
                customer.name=newname;
                find=true;
                break;
            }
        }
        return find;
    }
}

编写测试类分别测试增改查显示四种方法
new两个新对象customer
new一个 customerBiz
然后一个定死一个控制台输入
最后引用customerBiz的增加方法
customerBIz.addCustomer(customer)
customerBIz.addCustomer(customer2)
然后引用显示数组方法

接着控制台输入查询的名字
引用查询方法
如果不为空显示找到了,否则显示没找到
控制台输入修改的名字
修改后的名字
定义一个boolean a来接收修改方法
如果 为true则显示修改成功,否则修改失败
最后打印输出修改后的数据’

import java.util.Scanner;

public class test6 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        Customer customer=new Customer();
        CustomerBiz customerBiz=new CustomerBiz();
        customer.name="张三";
        customer.sex="男";
        customer.age=19;
        customer.cardType="金卡";
        Customer customer2=new Customer();
        System.out.println("请输入名字");
        customer2.name=input.next();
        System.out.println("请输入性别");
        customer2.sex=input.next();
        System.out.println("请输入年龄");
        customer2.age=input.nextInt();
        System.out.println("请输入卡类型");
        customer2.cardType=input.next();
        customerBiz.addCustomer(customer);
        customerBiz.addCustomer(customer2);
        customerBiz.showCustomer();
        System.out.println("请输入你要查询的名字");
        String name=input.next();
        Customer customer1=customerBiz.getInfo(name);
        if (customer1!=null){
            System.out.println("找到了");
            customer1.show();
        }else {
            System.out.println("没找到");
        }
        System.out.println("请输入要修改的名字");
        String old=input.next();
        System.out.println("请输入新名字");
        String NOW=input.next();
        boolean a=customerBiz.editCustomer(old,NOW);
        if (a){
            System.out.println("修改成功");
        }else{
            System.out.println("修改失败");
        }
        System.out.println("修改后为");
        customerBiz.showCustomer();
    }
}

结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值