zoukankan      html  css  js  c++  java
  • java基础---带参数的方法(二)

    1.为什么要用带参数的方法?

    工作原理:榨汁机扔个苹果到榨汁机里,出来苹果汁;扔桃子进去就出来桃汁;扔个梨进去就出来梨汁。(水果就是参数,汁是返回值)

    举例:

    package demo2;

    public class Zhazhiji {

    //带参数的 带返回值的方法

    public String zhazhi(String fruit){

    String juice=null;

    if (fruit.equals("apple")) {

    juice="apple juice";

    }else if(fruit.equals("peach")){

    juice="peach juice";

    }else if(fruit.equals("pear")){

    juice="pear juice";

    }

    return juice;

    }

    }

     

    package demo2;

    public class ZhaizhijiTest {

    public static void main(String[] args) {

        Zhazhiji zz=new Zhazhiji();

        String juice=zz.zhazhi("peach");

            System.out.println(juice);

    }

    }

    2.如何使用带参数的方法

    package demo2;

    public class Zhazhziji1 {

    public String zhazhi(String fruit){

    String juice=fruit+"";

    return juice;

    }

    }

     

     

    package demo2;

    public class test {

    public static void main(String[] args) {

    Zhazhziji1 zz=new Zhazhziji1();

    String juice=zz.zhazhi("西瓜");

    System.out.println(juice);

    }

    }

    1.定义带参数的方法

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

                   //方法的主体

    }

    举例:

    public class StudentsBiz {

    String[ ] names = new String[30];

    public void addName(String name) {

    //增加学生姓名

    }

    public void showNames() { //显示全部学生姓名 }

    }

    2.调用带参数的方法

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

    举例:

    public static void main(String[] args) {

     StudentsBiz st = new StudentsBiz();   先实例化对象,再使用方法

     Scanner input = new Scanner(System.in);

     for(int i=0;i<5;i++){

     System.out.print("请输入学生姓名:");

     String newName = input.next;

     st.addName(newName);

    st.addName(newName);  实参的类型、数量、顺序都要与形参一一对应

     }

     st.showNames();

     }

    3.带多个参数的方法(增删改学生人数)

    举例:

    package demo3;

    public class StudentBiz {

    public String[] students=new String[6];    里面放的是字符

     //添加学生

    public void add(String name){

    for (int i = 0; i < students.length; i++) {

    if (students[i]==null) {                遍历数组使用循环

    students[i]=name;

    break;

    }

    }

    }

     //查看所有学生

    public void show(){

    for (int i = 0; i < students.length; i++) {

    System.out.println(students[i]+" ");

    }

    }

    //查找

    public boolean find(int begin,int end,String name){

    boolean rs=false;

    for (int i = begin; i < end; i++) {

    if (students[i].equals(name)) {

    rs=true;

        break;

    }

    }

    return rs;

    }

    }

     

     

    package demo3;

    import java.util.Scanner;

    public class Test {

    public static void main(String[] args) {

    Scanner input=new Scanner(System.in);

    StudentBiz sbz=new StudentBiz();

    //添加学生信息    

    for (int i = 0; i < sbz.students.length; i++) {

    System.out.println("添加第"+(i+1)+"个学生的信息");

    String name=input.next();

    sbz.add(name);

    }

    //显示所有学生信息

    for (int i = 0; i < sbz.students.length; i++) {

    System.out.println(sbz.students[i]);

    }

    //查找

    System.out.println("请输入查找的学生名字");

    String findName=input.next();

    boolean rs=sbz.find(1, 4, findName);

    if (rs) {

    System.out.println("success");

    }else{

    System.out.println("fail");

    }

    }

    }

    4.带参方法常见错误

    1.调用方法时不能指定实参类型!

    //方法定义

    public void addName(String name){

    //方法体

    }

    //方法调用

    对象名.addName(String "张三")

    2.形参和实参数据类型不一致!

          //方法定义

    public boolean searchName(int start ,int end ,String name){

    //方法体

    }

    //方法调用

    String s="开始";

    int e=3;

    String name="张三";

    boolean flag=对象名. searchName(s ,e ,name)

    方法调用的是形式上的参数,没有实际值

    调用的时候里面写的才是实际参数

    3.形参和实参数量不一致!

    //方法定义

    public boolean searchName(int start,int end,String name){

    //方法体

    }

    //方法调用

    int s=1;

    int e=3;

    boolean flag= 对象名.searchName(s,e);

    4.调用方法后没有对返回值作任何处理!

    //方法定义

    public boolean searchName(int start,int end,String name){

    //方法体

    }

    //方法调用

    int s=1;

    int e=3;

    String name="张三";

    对象名.searchName(s,e,name);

    作业:修改学生信息

    package zuoye;

    public class editName {

    public String[] customer=new String[5];

        //添加客户

    public void add(String name){

    for (int i = 0; i < customer.length; i++) {

        if (customer[i]==null) {

    customer[i]=name;

    break;

    }  

    }

    }

    //修改信息

    public boolean editName(String oldName,String newName){

    boolean find=false;

    for (int i = 0; i <customer.length ; i++) {

    if (customer[i].equals(oldName)) {

    customer[i]=newName;

    find=true;

        break;

    }

    }

    return find;

    }

    //显示信息

    public void show(){

    System.out.println("*****************");

    System.out.println("客户姓名列表:");

    System.out.println("*****************");

    for (int i = 0; i < customer.length; i++) {

    System.out.print(customer[i]+" ");

    }

    System.out.println();

    }

    }

     

     

    package zuoye;

    import java.util.Scanner;

    public class editNameTest {

    public static void main(String[] args) {

    Scanner input=new Scanner(System.in);

    //输入客户

    editName a=new editName();

    for (int i = 0; i < a.customer.length; i++) {

    System.out.print("请输入客户信息:");

    String name=input.next();

    a.add(name);

    }

     

    //显示客户

    a.show();

    //修改客户

    System.out.println("请输入要修改的客户姓名");

    String oldName=input.next();

    System.out.println("请输入新客户的姓名");

    String newName=input.next();

    System.out.println("*****修改成功*****");

    boolean rs=a.editName(oldName,newName);

    if(rs){

    System.out.println("找到并修改成功");

    }else{

    System.out.println("没有找到!");

    }

    /*if (a.editName(oldName,newName)) {

    System.out.println("找到并修改成功");

    }else{

    System.out.println("没有找到!");

    }

    */

    a.show();

    }

    5.数组作为参数的方法

    举例:

    public class Mark {

    /*求最大值*/

    public double calcMax(double[] marks){     定义数组的房间

    double max=0;

    for (int i = 0; i < marks.length; i++) {

    if (marks[i]>max) {

    max=marks[i];

    }

    }

    return max;

    }

    /*求平均值*/

    public double calcAvg(double[] marks){

    double sum=0;

    double avg=0;

    for (int i = 0; i < marks.length; i++) {

    sum=sum+marks[i];

    }

        avg=sum/marks.length;

    return avg;

    }

    }

     

     

    public class MarksTest {

    public static void main(String[] args) {

    double[] marks={10,20,30,40,50,60,70,80,90,100};

    Mark m=new Mark();

    double max=m.calcMax(marks);

    double avg=m.calcAvg(marks);

    System.out.println("max"+max);

    System.out.println("avg"+avg);

    }

    }

    心得:

    6.对象作为参数的方法

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

    package 对象作为参数;

    public class Student {

        /*学生生类实体 */

    public String name;

    public int age;

    public double mark;

    public String id;

    /*方法*/

    public void info(){

    System.out.println("学生姓名"+name+"学生年龄"+age+"学生成绩"+mark+"学生学号"+id);

    }

    }

     

    package 对象作为参数;

    /*学生管理类*/

    public class StudentBiz2 {

     /*初始化学生数组*/

     public Student[] students=new Student[5];

    /* 添加学生*/

     public void save(Student stu){

     for (int i = 0; i < students.length; i++) {

    if (students[i]==null) {

    students[i]=stu;

        break;

    }

    }  

     }

     /*

      * 根据学生id

      * 查找学生信息

      * */

     public  Student  find(String id) {

        Student s=null;//存放结果

        for (int i = 0; i < students.length; i++) {

       if(students[i].id.equals(id)) {

        s=students[i];

        break;

       }

    }

        return s;    

     }

     /*显示所有学生信息*/

     public void show(){

     System.out.println("************************");

     System.out.println("学生学号 学生姓名 学生成绩 学生年龄");

     for (int i = 0; i < students.length; i++) {

    System.out.println(students[i].id+" "+students[i].name+" "+students[i].mark+" "+students[i].age);

    }

     System.out.println("************************");

     }

    /* 修改学生信息*/

     public boolean editStudent(Student s){

    boolean find=false;

    for (int i = 0; i <students.length ; i++) {

    if (students[i].id.equals(s.id)) {

    students[i].name=s.name;

    students[i].age=s.age;

            students[i].mark=s.mark;    

    find=true;

        break;

    }

    }

     

    return find;

    }

    }

     

    package 对象作为参数;

    import java.util.Scanner;

    public class Test {

    public static void main(String[] args) {

    Scanner input=new Scanner(System.in);

    StudentBiz2 sbz=new StudentBiz2();

    //添加学生信息    

    for (int i = 0; i < sbz.students.length; i++) {

        Student s=new Student();

    System.out.println("添加第"+(i+1)+"个学生的信息");

    System.out.println("请输入学生编号");

    s.id=input.next();

    System.out.println("请输入学生姓名");

    s.name=input.next();

    System.out.println("请输入学生年龄");

    s.age=input.nextInt();

    System.out.println("请输入学生成绩");

    s.mark=input.nextDouble();

    sbz.save(s);

    }

    //显示所有学生信息

    sbz.show();

    //根据学生id查找学生信息

      System.out.println("请输入您要查找的学生id");

            String id=input.next();

            Student stu=sbz.find(id);

            stu.info();

            //修改学生信息

    Student sEdit=new Student();

    System.out.println("请输入要修改的学生编号");

    sEdit.id=input.next();

         System.out.println("请输入该学生的名字的修改值");

         sEdit.name=input.next();

         System.out.println("请输入该学生的年龄的修改值");

         sEdit.age=input.nextInt();

         System.out.println("请输入该学生的成绩的修改值");

     sEdit.mark=input.nextDouble();

    boolean rs=sbz.editStudent(sEdit);

    if(rs){

    System.out.println("success");

    }else{

    System.out.println("fail ");

    }

     //重新打印

            sbz.show();

    }

    }

    练习:对客户姓名排序

    package paixu;

    import java.util.Arrays;

    public class SortName {

    public void sortN(String[] str){

    System.out.println("排序前...");

    for (int i = 0; i < str.length; i++) {

    System.out.print(str[i]+" ");

    }

    System.out.println();

    System.out.println("**********************************");

    // Array

    Arrays.sort(str);

    System.out.println("排序后...");

    for (int i = 0; i < str.length; i++) {

    System.out.print(str[i]+" ");

    }

    }

    }

     

    package paixu;

    public class SortTest {

    public static void main(String[] args) {

    String[] str={"A","C","B","E","D"};

    SortName sn=new SortName();

    sn.sortN(str);

    }

    }

    7.为什么需要包

    解决类的重名

    8.什么是junit

    帮助我们快速建立test

    9.如何使用Junit

    下载junit的包,导入到工程里面(点到工程上---> 右键--->Build Path---->Add Libraries--->JUnit---->选择junit4----finish

    点到要测试的.java文件下--->new--->JUnit Test Case--->New JUnit 4 test--->类名自动生成---->next--->选择要测试的方法--->生成一个@testpublic---->添加要测试的数据

    红条代表出现错误,蓝条代表正常

    举例:

    public class JunitUse {

    /*加法*/

    public int add(int a,int b){

    int c=a+b;

    return c;

    }

     

    /*减法*/

    public int minus(int a,int b){

    int c=a-b;

    return c;

    }

    }

    import static org.junit.Assert.*;

    import org.junit.Test;

    public class JunitUseTest {

    @Test

    public void testAdd() {

    JunitUse ju=new JunitUse();

    assertEquals(14, ju.add(10, 4));

    }

     

    @Test

    public void testMinus() {

    JunitUse ju=new JunitUse();

    assertEquals(6, ju.minus(10, 4));

    }

    }

    10.为什么需要包?

    一个文件夹会有同名的,文件比较多,管理起来比较乱

    11.包的作用

    解决类的同名问题

    1)允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件

    2)更好的保护类、属性和方法

    3)防止命名

    12.如何创建包?

    点击跟目录,new---> Package-->起名字

    13.包命名规范

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

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

    举例:

    www.wei.com

    com.wei.entity 存放实体类

    com.wei. dao  存放数据库相关文件

    com.wei. util   存放所有工具类

      

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

    14.如何导入包

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

    15查看源码

    首先关联window-->preferences---->java--->Installed JRES---->jret--->edi--->选后缀为rt.jar--->Souerce Attach --->找到jd安装的位置-- > src---->一直ok

    ctrl+点击单词

     作业:方法类

  • 相关阅读:
    PostgreSQL数据库((数据库类型介绍)
    postgreSQL(SQL语音操作数据库)
    postgreSQL数据库连接注意事项
    数据库
    Excel函数文本变E+显示怎么办
    无糖可乐不好喝
    通过 命令查看 linux桌面使用的是wayland 还是 X11
    Intel CPU的后缀含义
    互联网缩略语
    linux 下为windows交叉编译 ffmpeg库
  • 原文地址:https://www.cnblogs.com/-lyr/p/9569523.html
Copyright © 2011-2022 走看看