学生管理系统
import java.util.Arrays;import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
boolean flag=true;
Scanner in= new Scanner(System.in);
String[] idArr={};
String[] nameArr={};
double[] scoreArr={};
String id;
String name;
double score;
int a;
int index;//
while(flag){
System.out.println("1.成绩录入\t2.成绩查询\t3.成绩修改\t4.成绩列表\t5.退出系统");
a=in.nextInt();
switch(a){
case 1:
System.out.println("请输入学号:");
id=in.next();
System.out.println("请输入姓名:");
name=in.next();
System.out.println("请输入分数");
score=in.nextDouble();
if(show(idArr,id)==-1){
idArr=Arrays.copyOf(idArr,idArr.length+1);
nameArr=Arrays.copyOf(nameArr,nameArr.length+1);
scoreArr=Arrays.copyOf(scoreArr,scoreArr.length+1);
idArr=id;
nameArr=name;
scoreArr=score;
System.out.println("录入成功");
}else{
System.out.println("该学生存在,录入失败!!!");
}
break;
case 2://查询
System.out.println("请输入学号:");
id=in.next();
index=show(idArr,id);
if(index!=-1){
System.out.println("学号\t姓名\t成绩");
System.out.println(idArr+"\t"+nameArr+"\t"+scoreArr);
}else{
System.out.println("没找到该学生的信息");
}
break;
case 3:
break;
case 4:
break;
case 5:
System.out.println("成功退出系统!!!");
flag=false;
break;
default:
System.out.println("输入有误");
}
}
}
public static int show(String[]idArr,String id){
int index=-1;
for (int i = 0; i < idArr.length; i++) {
if(id.equals(idArr)){
index=1;
break;
}
}
return index;
}
}
为什么我标红的那一行会报错 改成System.out.println(""+idArr+"\t"+nameArr+"\t"+scoreArr);试试?
还有,下次代码用代码格式发布 还是没用
System.out.println(index);//这个打印出来是1
System.out.println(""+idArr+"\t"+nameArr+"\t"+scoreArr);这个报错
1.成绩录入 2.成绩查询 3.成绩修改 4.成绩列表 5.退出系统
1
请输入学号:
001
请输入姓名:
张三
请输入分数
66.3
录入成功
1.成绩录入 2.成绩查询 3.成绩修改 4.成绩列表 5.退出系统
2
请输入学号:
001
学号 姓名 成绩
1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Demo.main(Demo.java:45)
这个是控制台输入面板 这个异常是数组下标越界,首先考虑下标是否大了1 show 方法错了id是String idArr是数组
页:
[1]