在写Tools工具类的时候,多次使用了Scanner sc = new Scanner(System.in);但是Scanner一旦关闭就不能再次启用,否则会报错,网上试了很多办法,多不能完成,可能时技术不行吧,暂留一个问题!
package com.wdd.week02.day05.text02;
/**
*
* 引用数据类型-->数组-->增删改查
* CRUD(create, read, update, delete
* 以及排序
* @author WDD
*
*/
public class Main {
public static void main(String[] args) {
Student[] grade = new Student[10];
grade[0] = new Student("张三", 18, '男', 85);
grade[1] = new Student("李四", 19, '女', 95);
grade[2] = new Student("王五", 18, '男', 58);
grade[3] = new Student("赵六", 16, '男', 98);
grade[4] = new Student("孙七", 13, '女', 97);
//打印数组
Tools.printArray(grade);
System.out.println();
//排序:把同学按成绩排序
Tools.sortArray(grade);
Tools.printArray(grade);
System.out.println();
//增加一个学生
Tools.createArray(grade);
Tools.printArray(grade);
System.out.println();
//删除一个学生
Tools.deleteArray(grade);
Tools.printArray(grade);
System.out.println();
//修改一个学生的信息
Tools.updateArray(grade);
Tools.printArray(grade);
//查找一个学生的信息
Tools.readArray(grade);
}
}
package com.wdd.week02.day05.text02;
public class Student {
private String name;//姓名
private int age;//年龄
private char sex;//性别
private int score;//成绩
public Student() {
super();
}
public Student(String name, int age, char sex, int score) {
super();
this.name = name;
this.age = age;
this.sex = sex;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", sex=" + sex + ", score=" + score + "]";
}
}
package com.wdd.week02.day05.text02;
import java.util.Scanner;
public class Tools {
//打印
public static void printArray(Student[] grade) {
for (int i = 0; i < grade.length; i++) {
if (grade[i] == null) {
break;
} else {
System.out.println(grade[i].toString());
}
}
}
//排序
public static void sortArray(Student[] grade) {
for (int i = 0; i < grade.length - 1; i++) {
for (int j = 0; j < grade.length - 1 - i; j++) {
if (grade[j+1] == null) {
break;
} else if (grade[j].getScore() < grade[j+1].getScore()) {
Student temp = grade[j];
grade[j] = grade[j+1];
grade[j+1] = temp;
}
}
}
}
//增加一个学生
public static void createArray(Student[] grade) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入新增学生的name:");
String name = sc.next();
System.out.println("请输入新增学生的age:");
int age = sc.nextInt();
System.out.println("请输入新增学生的sex:");
char sex = sc.next().charAt(0);
System.out.println("请输入新增学生的score:");
int score = sc.nextInt();
//找出数组为null的那个位置的下标,并赋值
for (int i = 0; i < grade.length; i++) {
if (grade[i] == null) {
grade[i] = new Student(); //类的实例数组,每一个都需要单独创建。切记!切记!
grade[i].setName(name); //当增加时就要想到这个
grade[i].setAge(age);
grade[i].setSex(sex);
grade[i].setScore(score);
break;
}
}
}
//删除一个学生
public static void deleteArray(Student[] grade) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入想要删除的学生的姓名:");
String name = sc.next();
int k = 0;//记录要删除学生的下标
for (int i = 0; i < grade.length; i++) {
if (grade[i].getName().equals(name)) { //String 类型的要用.equals去判断,不
// 能直接用==号!!!!
k = i; //下次看到String 就要想到
break;
} else if (grade[i] == null) {
break;
}
}
int m = 0; //记录数组开始为空的位置
for (int i = 0; i < grade.length; i++) {
if (grade[i] == null) {
m = i;
break;
}
}
for (int j = k; j < m; j++) {
grade[j] = grade[j+1];
}
}
//修改一个学生的信息
public static void updateArray(Student[] grade) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要修改信息学生的姓名:");
String name = sc.next();
//判断时那一个学生需要修改信息
for (int i = 0; i < grade.length; i++) {
if(grade[i] == null) {
break;
} else if (grade[i].getName().equals(name)) {
System.out.println("请输入修改后的名字:");
grade[i].setName(sc.next());
System.out.println("请输入修改后的年龄:");
grade[i].setAge(sc.nextInt());
System.out.println("请输入修改后的性别:");
grade[i].setSex(sc.next().charAt(0));
System.out.println("请输入修改后的成绩:");
grade[i].setScore(sc.nextInt());
}
}
}
//查找一个学生的信息
public static void readArray(Student[] grade) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要查找学生的姓名:");
String name = sc.next();
for (int i = 0; i < grade.length; i++) {
if(grade[i] == null) {
System.out.println("没有你要查找的学生信息。");
break;
} else if (grade[i].getName().equals(name)) {
System.out.println(grade[i].toString());
break;
}
}
}
}
执行结果:
Student [name=张三, age=18, sex=男, score=85]
Student [name=李四, age=19, sex=女, score=95]
Student [name=王五, age=18, sex=男, score=58]
Student [name=赵六, age=16, sex=男, score=98]
Student [name=孙七, age=13, sex=女, score=97]
Student [name=赵六, age=16, sex=男, score=98]
Student [name=孙七, age=13, sex=女, score=97]
Student [name=李四, age=19, sex=女, score=95]
Student [name=张三, age=18, sex=男, score=85]
Student [name=王五, age=18, sex=男, score=58]
请输入新增学生的name:
孙三
请输入新增学生的age:
28
请输入新增学生的sex:
男
请输入新增学生的score:
55
Student [name=赵六, age=16, sex=男, score=98]
Student [name=孙七, age=13, sex=女, score=97]
Student [name=李四, age=19, sex=女, score=95]
Student [name=张三, age=18, sex=男, score=85]
Student [name=王五, age=18, sex=男, score=58]
Student [name=孙三, age=28, sex=男, score=55]
请输入想要删除的学生的姓名:
孙七
Student [name=赵六, age=16, sex=男, score=98]
Student [name=李四, age=19, sex=女, score=95]
Student [name=张三, age=18, sex=男, score=85]
Student [name=王五, age=18, sex=男, score=58]
Student [name=孙三, age=28, sex=男, score=55]
请输入要修改信息学生的姓名:
孙三
请输入修改后的名字:
孙大
请输入修改后的年龄:
11
请输入修改后的性别:
女
请输入修改后的成绩:
44
Student [name=赵六, age=16, sex=男, score=98]
Student [name=李四, age=19, sex=女, score=95]
Student [name=张三, age=18, sex=男, score=85]
Student [name=王五, age=18, sex=男, score=58]
Student [name=孙大, age=11, sex=女, score=44]
请输入要查找学生的姓名:
孙大
Student [name=孙大, age=11, sex=女, score=44]