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]+"\t");

}

}

//查找

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]+"\t");

}

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("学生学号\t学生姓名\t学生成绩\t学生年龄");

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

System.out.println(students[i].id+"\t\t"+students[i].name+"\t\t"+students[i].mark+"\t\t"+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]+"\t");

}

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]+"\t");

}

}

}

 

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+点击单词

作业:方法类

猜你喜欢

转载自www.cnblogs.com/-lyr/p/9569523.html