今天还是学习方法,并且昨天老师布置了一个小练习做了。老师说学会了方法就等于学会了面向对象的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));