Java学习第五天2021.7.23

今天还是学习方法,并且昨天老师布置了一个小练习做了。老师说学会了方法就等于学会了面向对象的60%的内容,所以方法还是很重要的,要多加练习,才能成为真正的大佬

方法的复习

方法的定义

方法的定义很重要,一定要牢牢记住方法的定义
修饰符 + 返回值类型 + 方法名 (){ }
在目前的学习中,方法名不要重复,而且一定要见名思意,看见名字就知道这个方法是干什么的,而且要多加注释,防止自己下次看的时候看不懂了,手动滑稽。

public static void main(String[] args){}
//定义了一个方法,传进去两个参数并返回两个数字的和
public static int sum(int a,int b){
     return (a+b);
}

方法的返回值类型

返回值类型是需要根据需求或者看自己的方便来弄的,或者根据需求,看是要进行输出,还是要值在进行操作。这些东西只有自己多多练习才能知道有没有返回值。

方法传参

在Java中,每个方法之间的数据是不互通的,只有你把方法的数据通过调用方法时候的传参弄进去,才能实现数据的交互,这个也是需要根据实际情况来的,如果需要数据,才用传参,如果不需要数据输入到那个方法中,则不需要进行传参

学生管理系统(方法写)

需求:这是一个很简单的学生管理系统,只在控制台输出即可,一共有五个功能:(1)查看学生信息(2)修改学生信息(3)添加学生信息(4)删除学生信息(5)退出系统。 学生信息只有学号。要求main方法中只有一条代码,并且方法分的尽可能细
分析:
1.先创建空白项目并且进行测试
2.先写出来main方法
3.根据需求,先写出来输出菜单的方法,并进行测试

public static void menu(){
		System.out.println("1.查看学生信息");
		System.out.println("2.修改学生信息");
		System.out.println("3.增加学生信息");
		System.out.println("4.删除学生信息");
		System.out.println("5.退出系统");
		System.out.print("请输入1-5来选择对应的功能:");
	}

4.根据需求,写出来选择功能,因为用户输入进去数值之后要进行选择对应的功能,并进行测试。因为要重复输出菜单的选项,知道用户输入5这个数字才表示要退出系统,所以要写成死循环

public static void choose(){
	for(;;){
		menu();
		int a = sc.nextInt();
		Scanner sc = new Scanner(System.in);
		if(a == 1){
			System.out.println(1);
		}
		else if(a == 2){
			System.out.println(2);
		}
		else if(a == 3){
			System.out.println(3);
		}
		else if(a == 4){
			System.out.println(4);
		}
		else if(a == 5){
			System.out.println("您已经成功退出");
			break;
			}
		else{
			System.out.println("请输入1-5的数字");
		}
	}
}

5.实现查看学生信息的功能,发现并没有数据来让我们显示,再写一个初始化数组和给数组定义初始值的方法。这个方法没有传进去的参数,但是需要我们返回初始化并且定义好初始值的数组

public static int[] chushiid(){
	int[] id = new int[100];
	id[0] = 1;
	id[1] = 2;
	return id;
}

6.在选择方法中定义一个数组来接收上面所产生的数组

	public static void choose(){
		int[] id = chushiid();
		for(;;){
			menu();
			Scanner sc = new Scanner(System.in);
			int a = sc.nextInt();
			if(a == 1){
				System.out.println(1);
			}
			else if(a == 2){
				System.out.println(2);
			}
			else if(a == 3){
				System.out.println(3);
			}
			else if(a == 4){
				System.out.println(4);
			}
			else if(a == 5){
				System.out.println("您已经成功退出");
				break;
			}
			else{
				System.out.println("请输入1-5的数字");
			}
		}
		
	}

7.然后开始写这四个功能,先写第一个查看功能,需要给查看功能这个方法传进去id数组,然后在查看方法中循环输出数据即可。但是要注意数组中没有定义的值是0,所以在输出的时候应该要排除0这个元素

	public static void chakan(int[] arr){
		for(int i = 0;i<arr.length;i++){
			if(arr[i] != 0){
				System.out.println("学号:"+arr[i]);
			}
		}
	}

8.然后实现修改方法,先让用户输入要修改的学生编号,然后在数组中找到对应的编号,然后让用户输入修改之后的编号,把找到的那个数值重新变成用户输入的数值

	public static void xiugai(int[] arr){
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入你要修改的学生的编号:");
		int oid = sc.nextInt();
		for(int i = 0;i<arr.length;i++){
			if(arr[i] == oid){
				System.out.print("请输入修改之后的学生编号:");
				arr[i] = sc.nextInt();
				System.out.println("修改成功");
			}
		}
	}

9.然后实现增加方法,让用户输入要增加的学生的编号,然后遍历去找空值,在空值的地方把学生的编号赋值进去即可

	public static void zengjia(int[] arr){
		Scanner sc = new Scanner(System.in);
		System.out.println("请你输入要增加的学生的编号");
		int tid = sc.nextInt();
		for(int i = 0;i<arr.length;i++){
			if(arr[i] == 0){
				arr[i] = tid;
				System.out.println("添加成功");
				break;
			}
		}
	}

10.然后实现删除功能,让用户输入要删除的学生的编号,然后遍历去寻找用户输入的编号,找到了之后把这个值重新赋为0即可

	public static void shanchu(int[] arr){
		Scanner sc = new Scanner(System.in);
		System.out.println("请你输入要删除的学生的编号");
		int sid = sc.nextInt();
		for(int i = 0;i<arr.length;i++){
			if(arr[i] == sid){
				arr[i] = 0;
				System.out.println("删除成功");
				break;
			}
		}
	}

11.别忘记在选择方法中调用这几个方法并且传入数组,并进行测试
全部的代码如下:

import java.util.Scanner;
class demo02
{
	public static void main(String[] args){
		choose();
	}
	//实现菜单的输出
	public static void menu(){
		System.out.println("1.查看学生信息");
		System.out.println("2.修改学生信息");
		System.out.println("3.增加学生信息");
		System.out.println("4.删除学生信息");
		System.out.println("5.退出系统");
		System.out.print("请输入1-5来选择对应的功能:");
	}
	//实现的和用户交互然后选择功能的方法
	public static void choose(){
		//先加载数据
		int[] id = chushiid();
		//写一个死循环来持续输出,直到
		for(;;){
			//调用输出菜单的方法
			menu();
			Scanner sc = new Scanner(System.in);
			int a = sc.nextInt();
			//实现和用户交互来实现功能的地方
			if(a == 1){
				//调用chakan方法并且传入id这个数组
				chakan(id);
			}
			else if(a == 2){
				//调用xiugai这个方法并且传入id这个数组
				xiugai(id);
			}
			else if(a == 3){
				//调用zengjia方法并且传入id这个数组
				zengjia(id);
			}
			else if(a == 4){
				//调用shanchu这个方法并且传入id这个数组
				shanchu(id);
			}
			else if(a == 5){
				System.out.println("您已经成功退出");
				break;
			}
			else{
				System.out.println("请输入1-5的数字");
			}
		}
	}
	//数据加载方法
	public static int[] chushiid(){
		int[] id = new int[100];
		id[0] = 1;
		id[1] = 2;
		return id;
	}
	//查看功能的实现
	public static void chakan(int[] arr){
		for(int i = 0;i<arr.length;i++){
			if(arr[i] != 0){
				System.out.println("学号:"+arr[i]);
			}
		}
	}
	//修改功能的实现
	public static void xiugai(int[] arr){
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入你要修改的学生的编号:");
		int oid = sc.nextInt();
		for(int i = 0;i<arr.length;i++){
			if(arr[i] == oid){
				System.out.print("请输入修改之后的学生编号:");
				arr[i] = sc.nextInt();
				System.out.println("修改成功");
				break;
			}
		}
	}
	//增加功能的实现
	public static void zengjia(int[] arr){
		Scanner sc = new Scanner(System.in);
		System.out.println("请你输入要增加的学生的编号");
		int tid = sc.nextInt();
		for(int i = 0;i<arr.length;i++){
			if(arr[i] == 0){
				arr[i] = tid;
				System.out.println("添加成功");
				break;
			}
		}
	}
	//删除功能的实现
	public static void shanchu(int[] arr){
		Scanner sc = new Scanner(System.in);
		System.out.println("请你输入要删除的学生的编号");
		int sid = sc.nextInt();
		for(int i = 0;i<arr.length;i++){
			if(arr[i] == sid){
				arr[i] = 0;
				System.out.println("删除成功");
				break;
			}
		}
	}
}

(改进)下面的代码是我写的学生是两个属性,一个学号,一个姓名,并且让这个程序具有一点的容错,可能写的不是很好,但是功能基本都实现了,如果有写的不好的地方,欢迎提出

import java.util.Scanner;
class demo07
{
	public static void main(String[] args){
		run();
	}
	//此方法用来初始化id这个数组,并且赋值并返回
	public static int[] iddingyi(){
		int[] id = new int[200];
		id[0] = 201801;
		id[1] = 201802;
		return id;
	}
	//此方法用来初始化name这个数组,并且赋值并返回
	public static String[] namedingyi(){
		String[] name = new String[200];
		name[0] = "张三";
		name[1] = "李四";
		return name;
	}
	//此方法来调用全部的方法
	public static void run(){
		//初始化两个数组
		int[] id = iddingyi();
		String[] name = namedingyi();
		Scanner sc = new Scanner(System.in);
		//写死循环
		for(;;){
			System.out.println("1:查看学生数据");
		    System.out.println("2:删除学生数据");
		    System.out.println("3:添加学生数据");
		    System.out.println("4:修改学生数据");
	    	System.out.println("5:退出程序");
		    System.out.print("请输入1-5来执行对应的功能:");
			int xuanze = sc.nextInt();
			//通过输入的数字来进行选择对应的功能
			if(xuanze == 1){
				chakan(id,name);
			}
		    else if(xuanze == 2){
			    shanchu(id,name);
		    }
		    else if(xuanze == 3){
			    tianjia(id,name);
	    	}
    		else if(xuanze == 4){
	    		xiugai(id,name);
	    	}
	    	else if(xuanze == 5){
				System.out.println("退出系统成功");
				break;
	    	}
	    	else{
			    System.out.println("请输入1-5的数字");
		    }
		}
	}
	//查看功能的实现
	public static void chakan(int[] id,String[] name){
		for(int i = 0;i<id.length;i++){
			if(id[i]!=0&&name[i]!=null){
				System.out.println("学号:"+id[i]+",姓名:"+name[i]);
			}
		}
	}
	//删除功能的实现
	public static void shanchu(int[] id,String[] name){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你要删除的学生的学号");
		int sid = sc.nextInt();
		boolean suo = exitid(sid,id);
		//结果为true表示有此数据
		if(suo){
			int xiabiao = xiabiao(sid,id);
			id[xiabiao] = 0;
			name[xiabiao] = null;
			System.out.println("删除成功");
		}
		//否则就是没有这个数据
		else{
			System.out.println("查无此人");
		}
	}
	//添加功能的实现
	public static void tianjia(int[] id,String[] name){
		Scanner sc = new Scanner(System.in);
		System.out.println("请你输入要添加的学生的学号");
		int tid = sc.nextInt();
		//如果suo是true,则表示有此数据,就要重新进行输入,为false则继续进行
		boolean suo = exitid(tid,id);
		if(suo){
			System.out.println("你输入的学号已存在,请重试");
		}
		else{
			System.out.println("请你输入要添加的学生的姓名");
			String tname = sc.next();
			int kong = 0;
			//遍历数组找到空值来存放数据
			for(int i = 0;i<id.length;i++){
				if(id[i]==0&&name[i]==null){
					kong = i;
					break;
				}
			}
			id[kong] = tid;
			name[kong] = tname;
			System.out.println("添加成功");
		}
	}
	//修改功能的实现
	public static void xiugai(int[] id,String[] name){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你要修改的学生学号");
		int oid = sc.nextInt();
		//如果结果是true,则表示用户输入的旧学号存在,可以修改
		boolean suo = exitid(oid,id);
		if(suo){
			int xiu = xiabiao(oid,id);
			System.out.println("请输入修改之后的学号");
			int nid = sc.nextInt();
			//判断一下修改之后的学号数组中是否存在,如果存在则结果为true
			boolean suo1 = exitid(nid,id);
			if(suo1){
				System.out.println("你输入的学号已存在,请重试");
			}
			else{
				id[xiu] = nid;
				System.out.println("请输入修改之后的姓名");
				name[xiu] = sc.next();
				System.out.println("修改成功");
			}
		}
		else{
			System.out.println("查无此人,请重试");
		}
	}
	//判断在数组中是否有这个数字,如果有则返回true,没有返回false
	public static boolean exitid(int id,int[] ids){
		boolean suo = false;
		for(int i = 0;i<ids.length;i++){
			if(ids[i] == id){
				suo = true;
				break;
			}
		}
		return suo;
	}
	//判断输入id在ids数组中的所在位置,返回下标值
	public static int xiabiao(int id,int[] ids){
		int xiabiao = 0;
		for(int i = 0;i<ids.length;i++){
			if(ids[i] == i){
				xiabiao = i;
			}
		}
		return xiabiao;
	}
}

集合(ArrayList)

集合的定义

集合是一种容器,是一种特殊的数组,长度可变的数组
集合的定义可以参考数组的定义:
ArrayList<数据类型> 变量名 = new ArrayList();
注意数据类型,int要写成Integer,doouble要写成Double

ArrayList<Integer> arr = new ArrayList();

集合的使用

ArrayList有四个常用的方法
1.添加:add(数据)

ArrayList<Integer> arr = new ArrayList();
arr.add(1);
arr.add(3);

2.取出数据:get(索引)

ArrayList<Integer> arr = new ArrayList();
arr.add(1);
arr.add(3);
System.out.println(arr.get(0));
int a = arr.get(1);
System.out.println(a);

3.数组长度:size()

ArrayList<Integer> arr = new ArrayList();
arr.add(1);
arr.add(3);
System.out.println(arr.get(0));
int a = arr.get(1);
System.out.println(a);
System.out.println(arr.size());

4.删除:remove(索引)

ArrayList<Integer> arr = new ArrayList();
arr.add(1);
arr.add(3);
System.out.println(arr.get(0));
int a = arr.get(1);
System.out.println(a);
System.out.println(arr.size());
arr.remove(0);
System.out.println(arr.get(0));

5.修改:set(索引,数值)
就是把对应索引的数值变为括号后面的数值

ArrayList<Integer> arr = new ArrayList();
arr.add(1);
arr.add(3);
System.out.println(arr.get(0));
int a = arr.get(1);
System.out.println(a);
System.out.println(arr.size());
arr.remove(0);
System.out.println(arr.get(0));
arr.set(0,100);
System.out.println(arr.get(0));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值