代码没有报错,但是运行结果功能实现不了麻烦大家帮忙看看
package student;
import java.util.*;
class Stu{
static Scanner sc=new Scanner(System.in);
static Stu[] stu=new Stu[100];
static int number=0;
private String name;
private long num;
private int age;
private char sex;
private double sore;
public Stu(){
super();
}
public void setName(String name) {
this.name=name;
}
public void setNum(long num) {
this.num=num;
}
public void setAge(int age) {
this.age=age;
}
public void setSex(char sex) {
this.sex=sex;
}
public void setSore(double sore) {
this.sore=sore;
}
public String getName() {
return this.name;
}
public long getNum() {
return this.num;
}
public int getAge() {
return this.age;
}
public char getSex() {
return this.sex;
}
public double getSore() {
return this.sore;
}
public static void add(Stu stu[]) {
System.out.println("请添加学生信息--按“0”停止输入");
while(true) {
if(sc.nextInt()==0)break;
stu[number].setName(sc.next());
stu[number].setNum(sc.nextLong());
stu[number].setAge(sc.nextInt());
stu[number].setSex(sc.next().charAt(0));
stu[number].setSore(sc.nextInt());
number++;
System.out.println("添加成功");
}
}
public static void delete(Stu stu[]) {
System.out.println("请输入删除学生学号");
long num1=sc.nextLong();
int i;
for(i=0;i<stu.length;i++) {
if(num1==stu[i].num) break;
if(i==stu.length)System.out.println("未找到");
}
for(;i<stu.length-1;i++) {
stu[i]=stu[i+1];
}
number--;
}
public static void update(Stu stu[]) {
System.out.println("请输入修改的学生信息学号");
long num2=sc.nextLong();
int i;
for(i=0;i<stu.length;i++) {
if(num2==stu[i].num) {
System.out.println("请输入修改内容选项及修改内容");
System.out.println("1-修改姓名 2-修改学号 3-修改年龄 4-修改性别 5-修改成绩");
int choice1=sc.nextInt();
switch(choice1) {
case 1:stu[i].setName(sc.next());break;
case 2:stu[i].setNum(sc.nextLong());break;
case 3:stu[i].setAge(sc.nextInt());break;
case 4:stu[i].setSex(sc.next().charAt(0));break;
case 5:stu[i].setSore(sc.nextDouble());;break;
}
break;
}
if(i==stu.length)
System.out.println("信息错误");
}
}
public static void select(Stu stu[]) {
System.out.println("请输入查询学生的学号");
long num3=sc.nextLong();
int i;
for(i=0;i<stu.length;i++) {
if(num3==stu[i].num)
System.out.println("姓名"+stu[i].getName()+"学号"+stu[i].getNum()+"年龄"+stu[i].getAge()+"性别"+stu[i].getSex()+"成绩"+stu[i].getSore());
if(i==stu.length)
System.out.println("信息错误");
}
}
public static void selectall(Stu stu[]) {
System.out.println("全体学生信息");
int i;
for(i=0;i<stu.length;i++) {
System.out.println("姓名"+stu[i].getName()+"学号"+stu[i].getNum()+"年龄"+stu[i].getAge()+"性别"+stu[i].getSex()+"成绩"+stu[i].getSore());
}
}
public static void show() {
int choice;
System.out.println("这是一个学生信息管理系统,欢迎您对本系统的使用");
while(true){
System.out.println("1.信息添加");
System.out.println("2.信息删除");
System.out.println("3.信息修改");
System.out.println("4.指定信息查询");
System.out.println("5.总体信息查询");
System.out.println("6.退出");
System.out.println("请输入你要进行的操作");
choice=sc.nextInt();
if(choice==6)break;
switch(choice){
case 1: add(stu); break;//添加学生信息
case 2: delete(stu);break;//删除学生信息
case 3: update(stu);break;//修改学生信息
case 4: select(stu);break;//指定查询学生信息
case 5: selectall(stu);break;//总体信息查询
}
}
}
}
public class student{
public static void main(String[] args){
Stu stu=new Stu();
stu.show();
}
}
.你这个写的好乱啊。。 我之前正好帮别人也写了一个差不多功能的,不过也早了,所以写的也不是很好,你可以下载下来借鉴一下。。
https://github.com/LIlGG/ConsoleApplication
另外你这个无参构造函数里面super()没必要写, 这个类又没有父类。你super()也只是执行了Object的无参构造函数。
然后把功能分类,不要都在一个类里面写, stu就单独作为一个实体类。
方法和类该抽象的抽象一下
我也是刚接触软件开发这个行业,刚U1,针对你写的代码做了一下优化,我觉得这么写更加合理!跟你写了几个方法,
package user;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Student {
static List lists = new ArrayList(); //存放多个新增的学生信息
public static void main(String[] args) {
Stu stu = new Stu();
show(); //列表展示
}
private static void show() {
Scanner sc = new Scanner(System.in);
int choice = 0;
System.out.println("这是一个学生信息管理系统,欢迎您对本系统的使用");
while (true) {
System.out.println("1.信息添加,2.信息删除,3.信息修改,4.指定信息查询,5.总体信息查询,6.退出");
System.out.println("请输入");
choice = sc.nextInt();
if (choice == 6) break;
switch (choice) {
case 1:
add();
break;//添加学生信息
case 2:
delete();
break;//删除学生信息
case 3:
//update();
break;//修改学生信息
case 4:
// select(stu);
break;//指定查询学生信息
case 5:
// selectall(stu);
break;//总体信息查询
}
}
}
public static void add() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("1.添加学生信息,0.操作结束");
int arr = scanner.nextInt();
if (arr == 0){
System.out.println("===人员录入结束!===");
break;
} ;
//创建学生对象
Stu stu = new Stu();
System.out.println("请输入姓名:");
String userName = scanner.next();
stu.setName(userName);
System.out.println("请输入数量:");
long num = scanner.nextLong();
stu.setNum(num);
System.out.println("请输入年龄:");
int age = scanner.nextInt();
stu.setAge(age);
System.out.println("请输入性别:");
char sex = scanner.next().charAt(0);
stu.setSex(sex);
System.out.println("请输入成绩:");
double score = scanner.nextDouble();
stu.setSore(score);
lists.add(stu);
System.out.println("==========添加成功=========");
for(Stu student:lists){
System.out.println("已录入成功人员:" + student);
}
}
}
public static void delete() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("1.删除开始,0.操作结束");
int arr = scanner.nextInt();
if (arr == 0){
System.out.println("===删除结束!===");
break;
} ;
System.out.println("请输入删除学生学号~");
long num1 = scanner.nextLong(); //学号
if( null != lists && lists.size() >0){
for(int i = 0 ;i < lists.size() ;i++){
if(num1 == lists.get(i).getNum()){
lists.remove(i);
System.out.println("删除成功!删除人员为:" + lists.get(i));
}else{
continue;
}
}
}
System.out.println("剩余人员个数为:" + lists.size());
}
}
public static void selectall(Stu stu[]) {
System.out.println("全体学生信息");
int i;
for (i = 0; i < stu.length; i++) {
System.out.println("姓名" + stu[i].getName() + "学号" + stu[i].getNum() + "年龄" + stu[i].getAge() + "性别" + stu[i].getSex() + "成绩" + stu[i].getSore());
}
}
}
class Stu {
private String name;
private long num;
private int age;
private char sex;
private double sore;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getNum() {
return num;
}
public void setNum(long num) {
this.num = num;
}
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 double getSore() {
return sore;
}
public void setSore(double sore) {
this.sore = sore;
}
@Override
public String toString() {
return "Stu{" +
"name='" + name + '\'' +
", num=" + num +
", age=" + age +
", sex=" + sex +
", sore=" + sore +
'}';
}
}
错误是因为空指针异常,首先add学生的时候stu[number]没有进行初始化,该对象为空,所以调用set方法的时候会出现null pointer exception,还有其他操作,在遍历stu数组的时候需要进行判空操作,保证调用对象的方法时,该对象不为空。
class Stu{
static Scanner sc=new Scanner(System.in);
static Stu[] stu=new Stu[100];
static int number=0;
private String name;
private long num;
private int age;
private char sex;
private double sore;
public Stu(){
super();
}
public void setName(String name) {
this.name=name;
}
public void setNum(long num) {
this.num=num;
}
public void setAge(int age) {
this.age=age;
}
public void setSex(char sex) {
this.sex=sex;
}
public void setSore(double sore) {
this.sore=sore;
}
public String getName() {
return this.name;
}
public long getNum() {
return this.num;
}
public int getAge() {
return this.age;
}
public char getSex() {
return this.sex;
}
public double getSore() {
return this.sore;
}
public static void add(Stu stu[]) {
System.out.println("请添加学生信息--按“0”停止输入");
while(true) {
if(sc.next().equals("0"))break;
stu[number] = new Stu();//首先要初始化对象
stu[number].setName(sc.next());
stu[number].setNum(sc.nextLong());
stu[number].setAge(sc.nextInt());
stu[number].setSex(sc.next().charAt(0));
stu[number].setSore(sc.nextInt());
number++;
System.out.println("添加成功");
}
}
public static void delete(Stu stu[]) {
System.out.println("请输入删除学生学号");
long num1=sc.nextLong();
int i;
for(i=0;i<stu.length;i++) {
if (stu[i] != null) {//判空,保证stu[i]不为空
if(num1==stu[i].num) break;
if(i==stu.length)System.out.println("未找到");
}
}
for(;i<stu.length-1;i++) {
stu[i]=stu[i+1];
}
number--;
}
public static void update(Stu stu[]) {
System.out.println("请输入修改的学生信息学号");
long num2=sc.nextLong();
int i;
for(i=0;i<stu.length;i++) {
if (stu[i] != null) {{//判空
if(num2==stu[i].num) {
System.out.println("请输入修改内容选项及修改内容");
System.out.println("1-修改姓名 2-修改学号 3-修改年龄 4-修改性别 5-修改成绩");
int choice1=sc.nextInt();
switch(choice1) {
case 1:stu[i].setName(sc.next());break;
case 2:stu[i].setNum(sc.nextLong());break;
case 3:stu[i].setAge(sc.nextInt());break;
case 4:stu[i].setSex(sc.next().charAt(0));break;
case 5:stu[i].setSore(sc.nextDouble());;break;
}
break;
}
}
if(i==stu.length)
System.out.println("信息错误");
}
}
public static void select(Stu stu[]) {
System.out.println("请输入查询学生的学号");
long num3=sc.nextLong();
int i;
for(i=0;i<stu.length;i++) {
if (stu[i] != null) {{//判空
if(num3==stu[i].num)
System.out.println("姓名"+stu[i].getName()+"学号"+stu[i].getNum()+"年龄"+stu[i].getAge()+"性别"+stu[i].getSex()+"成绩"+stu[i].getSore());
if(i==stu.length)
System.out.println("信息错误");
}
}
}
public static void selectall(Stu stu[]) {
System.out.println("全体学生信息");
int i;
for(i=0;i<stu.length;i++) {
if (stu[i] != null) {{//判空
System.out.println("姓名"+stu[i].getName()+"学号"+stu[i].getNum()+"年龄"+stu[i].getAge()+"性别"+stu[i].getSex()+"成绩"+stu[i].getSore());
}
}
}
public static void show() {
int choice;
System.out.println("这是一个学生信息管理系统,欢迎您对本系统的使用");
while(true){
System.out.println("1.信息添加");
System.out.println("2.信息删除");
System.out.println("3.信息修改");
System.out.println("4.指定信息查询");
System.out.println("5.总体信息查询");
System.out.println("6.退出");
System.out.println("请输入你要进行的操作");
choice=sc.nextInt();
if(choice==6)break;
switch(choice){
case 1: add(stu); break;//添加学生信息
case 2: delete(stu);break;//删除学生信息
case 3: update(stu);break;//修改学生信息
case 4: select(stu);break;//指定查询学生信息
case 5: selectall(stu);break;//总体信息查询
}
}
}
}