美文网首页
7.有参方法和包的概念

7.有参方法和包的概念

作者: 蛋炒饭_By | 来源:发表于2018-01-11 08:48 被阅读128次

    <pre>

    为什么要用带参数的方法

    image

    定义带参数的方法

    参数列表:

    (数据类型 参数1,数据类型 参数2…)

    public class ZhazhiJi {
        public String zhazhi ( String fruit ) {
              String juice = fruit + "汁";
              return juice; 
         } 
    }
    
    

    调用带参数的方法

    /*调用zhazhi方法*/
    ZhazhiJi myZhazhiji = new ZhazhiJi();
    String myFruit = "苹果";
    String myJuice = myZhazhi.zhazhi(myFruit);
    System.out.println(myJuice);
    
    

    调用方法,传递的参数要与参数列表一一对应


    image

    定义带参数的方法

    <访问修饰符> 返回类型 <方法名>(<形式参数列表>) {

    //方法的主体

    }

    调用带参数的方法

    对象名.方法名(参数1, 参数2,……,参数n)

    public class StudentsBiz {
        String[] names = new String[30];
        int index = 0;//记录数组中学员的个数,也就是下一个需要插入数组的下标位置
        public void addName(String name)
        {
            names[index] = name;
            index++;
        }
        public void showNames()
        {
            for(int i = 0; i < index; i++)
            {
                System.out.println(names[i]);
            }
        }
    }
    
    
    public class Test {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            StudentsBiz studentsBiz = new StudentsBiz();
            for(int i = 0; i < 3; i++)
            {
                System.out.println("请输入姓名");
                String name = scanner.next();
                studentsBiz.addName(name);
            }
            studentsBiz.showNames();
        }
    }
    
    

    带多个参数的方法

    在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功

    设计方法,通过传递三个参数(开始位置、结束位置、查找的姓名)来实现

    public class StudentsBiz {
        String[] names = {"zhangsan","lisi","wangwu","liudehua"};
    
        public boolean searchName(String name,int start, int end)
        {
            if(end > names.length)
            {
                end = names.length;
            }
            if(start < 0)
            {
                start = 0;
            }
    
            for(int i = start; i < end; i++)
            {
                if(names[i].equals(name))
                {
                    return true;
                }
            }
    
            return false;
        }
    }
    
    

    调用方法

    public class Main {
    
        public static void main(String[] args) {
        // write your code here
    //         zhangsan,lisi,wangwu,zhaobensan,liudehua
            StudentsBiz studentsBiz = new StudentsBiz();
            boolean b = studentsBiz.searchName("liudehua2",-5,8);
            System.out.println(b);
        }
    }
    
    

    数组作为参数的方法

    有5位学员参加了Java知识竞赛的决赛,输出决赛的平均成绩和最高成绩

    image

    将5位学员的决赛成绩保存在数组中

    设计求平均成绩、最高成绩的方法,并把数组作为参数

    public class ScoreCalc {
    
        public int getTotalScore(int[] scores)
        {
            int totalScore = 0;
            for(int i = 0; i < scores.length; i++)
            {
                totalScore += scores[i];
            }
            return totalScore;
        }
    
        public double getAvgScore(int[] scores)
        {
            int totalScore = getTotalScore(scores);
            return (double) totalScore/scores.length;
        }
    
        public int getMaxScore(int[] scores)
        {
            int max = scores[0];//假设数组的第一个元素是最大
            for(int i = 1; i < scores.length; i++)
            {
                if(max < scores[i])
                {
                    max = scores[i];
                }
            }
    
            return max;
        }
    }
    
    
    public class Main {
    
        public static void main(String[] args) {
        // write your code here
            ScoreCalc scoreCalc = new ScoreCalc();
            int[] arrays = {67,76,88,86,99};
            int total = scoreCalc.getTotalScore(arrays);
            System.out.println(total);
            double avg = scoreCalc.getAvgScore(arrays);
            System.out.println(avg);
    
            int max = scoreCalc.getMaxScore(arrays);
            System.out.println(max);
        }
    }
    
    

    对象作为参数的方法

    在实现了增加一个学生姓名的基础上,增加学生的学号、年龄和成绩,并显示这些信息,如何实现?

    image

    方式一:设计带四个参数(学号、姓名、年龄、成绩)的方法

    方式二:将学生学号、姓名、年龄、成绩封装在学生对象中,设计方法,以学生对象作为参数

    可以将多个相关的信息封装成对象,作为参数传递,避免方法有太多的参数!

    public class Student {
        int no;//学号
        int age;
        String name;
        int score;
    
        public String toString()
        {
            String info =  "学号" + no + "年龄" + age + "姓名" + name;
            return info;
        }
    }
    
    
    public class School {
        Student[] students = new Student[30];
        int index = 0;//当前数组中有多少个学生,也就是数组下一个要插入的下标位置
        public void addStudent(Student student)
        {
            students[index] = student;
            index++;
        }
    
        public void showStudents()
        {
            for(int i = 0; i < index; i++)
            {
                System.out.println(students[i]);
            }
        }
    //    public void addStudent(String name, int no,int age, int score,int height)
    //    {
    //
    //    }
    }
    
    
    public class Main {
    
        public static void main(String[] args) {
        // write your code here
            School school = new School();
            Student student = new Student();
            student.name = "zhangsan";
            student.no = 10;
            student.age = 23;
            student.score = 90;
            school.addStudent(student);
            school.showStudents();
        }
    }
    
    

    为什么需要包

    Windows树形文件系统

    文档分门别类,易于查找和管理

    使用目录解决文件同名冲突问题


    image

    如何存放两个同名的类而不冲突?

    image
    image
     //声明包,作为Java源代码第一条语句,
    //用package声明包,以分号结尾
    //com.company.model是包名
    package com.company.model;  
    
    public class School {
        //……
        public String toString() {
           //……
        }
    }
    
    

    包命名规范

    包名由小写字母组成,不能以圆点开头或结尾

    包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名

    package net.javagroup.mypackage;

    包名后续部分依不同机构内部的规范不同而不同

    用intelij创建包和类

    包与目录的关系

    创建好的包和Java源文件是如何存储的?

    创建包cn.company.classandobject ,

    即创建了目录结构:cn\company\classandobject

    image

    如何导入包

    为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类

    
    import java.util.*;      //导入java.util包中所有类
    import cn.company.classandobject.School;    //导入指定包中指定类
    
    
    image

    本节练习

    模拟银行账户业务

    创建包bank.com,

    编写Account类,添加带参

    方法实现存款和取款业务,

    存款时帐户初始金额为0元,

    取款时如果余额不足给出提示

    image

    package com.bank;
    /**

    • Created by ttc on 2017/12/26.
      */
      //账户
      public class Account {
      public int money;//账户余额

      //存钱
      public void saveMoney(int value)
      {
      money += value;
      System.out.println("存款成功");
      }

      //取钱
      public void getMoney(int value)
      {
      if(money < value)
      {
      System.out.println("余额不足");
      return;
      }
      money -= value;
      System.out.println("取款成功");
      }

      //显示当前余额
      public void showMoney()
      {
      System.out.println("当前余额为:" + money);
      }
      }

    public class Main {

    public static void main(String[] args) {
    // write your code here
    
        Scanner scanner = new Scanner(System.in);
        int command = 0;//命令
        //初始化账户对象
        Account account = new Account();
    
        while (true)
        {
            System.out.println("1 存款 2 取款 0 退出");
            System.out.println("请选择要办理的业务");
            command = scanner.nextInt();
    
            if(command == 1)//存款
            {
                System.out.println("请输入金额");
                //获取用户输入的金额
                int value = scanner.nextInt();
                account.saveMoney(value);
                account.showMoney();
            }
            else if(command == 2)
            {
                System.out.println("请输入金额");
                //获取用户输入的金额
                int value = scanner.nextInt();
                account.getMoney(value);
                account.showMoney();
    
            }
            else if(command == 0)
            {
                break;
            }
            else
            {
                System.out.println("错误的命令");
            }
        }
    
        System.out.println("程序退出");
    }
    

    }

    相关文章

      网友评论

          本文标题:7.有参方法和包的概念

          本文链接:https://www.haomeiwen.com/subject/dcchgxtx.html