package com.schoolManager;import java.util.*;public class Main { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList arr = new ArrayList();//暂时储存三个元素
Staff sta=new Staff();
Students stu=new Students();
Teachers tea=new Teachers();
tea.staff( "shenjinwei", "man", 21, "computer", 200703777, "871121");
sta.staff( "shenjinwei", "man", 21, "computer", 200703777, "871121");
stu.staff( "shenjinwei", "man", 21, "computer", 200703777, "871121");
arr.add(sta);
arr.add(stu);
arr.add(tea);

System.out.println("学生-1;教师-2;管理员-3");
System.out.println("please enter num 1/2/3");
Scanner in=new Scanner(System.in);
int choice=in.nextInt();
switch(choice){

case 1:

System.out.println("请输入账号密码(账号是9位):");//格式是200703777871121账号是9位;
Scanner ain=new Scanner(System.in);
String achoice=ain.nextLine();
String zhanghao=achoice.substring(0,9);
String mima=achoice.substring(10,achoice.length());
 boolean  t=arr.contains(zhanghao);//查找元素
stu=(Students) arr.get(arr.indexOf(zhanghao));//根据账号找到这个元素
if(t){
if(stu.psaawords==mima){
System.out.println("查询个人信息-1;修改密码-2");
System.out.println("please enter num 1/2");
Scanner n=new Scanner(System.in);
int aachoice=n.nextInt();
if(aachoice==1){
stu.toString();
}
else if(aachoice==2){
System.out.println("请输入新 密码:");
Scanner aain=new Scanner(System.in);
String newpasswords=aain.nextLine();
stu.modification(stu, newpasswords);
}
}
else System.out.println("wrong passwords!"); break;
}
else System.out.println("we don't have  this one!");break;

case 2:
System.out.println("请输入账号密码(账号是9位):");//格式是200703777871121账号是9位;
Scanner aain=new Scanner(System.in);
String aachoice=aain.nextLine();
String azhanghao=aachoice.substring(0,9);
String amima=aachoice.substring(10,aachoice.length());
 boolean  at=arr.contains(azhanghao);//查找元素
tea=(Teachers) arr.get(arr.indexOf( azhanghao));//根据账号找到这个元素

if(at){
if(tea.psaawords==amima){
System.out.println("查自己-1;查学生-2;修改密码-3");
System.out.println("please enter num 1/2");
Scanner n=new Scanner(System.in);
int aaachoice=n.nextInt();
if(aaachoice==1){
tea.toString();
}
else if(aaachoice==2){
System.out.println("请输入要查询的账号(账号是9位):");
Scanner aaain=new Scanner(System.in);
String aaaachoice=aaain.nextLine();
stu=(Students) arr.get(arr.indexOf(aaaachoice));
tea.toString(stu);
}
else if(aaachoice==3){
System.out.println("请输入新 密码:");
Scanner aaain=new Scanner(System.in);
String newpasswords=aaain.nextLine();
stu.modification(stu, newpasswords);
}
}
else System.out.println("wrong passwords!");break;
}
else System.out.println("we don't have  this one!");break;

case 3:
System.out.println("请输入账号密码(账号是9位):");//格式是200703777871121账号是9位;
Scanner aaain=new Scanner(System.in);
String aaachoice=aaain.nextLine();
String aazhanghao=aaachoice.substring(0,9);
String aamima=aaachoice.substring(10,aaachoice.length());
 boolean  aat=arr.contains(aazhanghao);//查找元素
sta=(Staff) arr.get(arr.indexOf( aazhanghao));//根据账号找到这个元素

if(aat){
if(tea.psaawords==aamima){
System.out.println("查自己-1;查学生-2;查老师-3;修改密码-4");
System.out.println("please enter num 1/2/3/4");
Scanner n=new Scanner(System.in);
int aaaachoice=n.nextInt();
if(aaaachoice==1){
tea.toString();
}
else if(aaaachoice==2){
System.out.println("请输入要查询的账号(账号是9位):");
Scanner aaaain=new Scanner(System.in);
String aaaaachoice=aaaain.nextLine();
stu=(Students) arr.get(arr.indexOf(aaaaachoice));
tea.toString(stu);
}
else if(aaaachoice==3){
System.out.println("请输入要查询的账号(账号是9位):");
Scanner aaaain=new Scanner(System.in);
String aaaaachoice=aaaain.nextLine();
tea=(Teachers) arr.get(arr.indexOf(aaaaachoice));
sta.toString(tea);
} else if(aaaachoice==4){
System.out.println("请输入新 密码:");
Scanner aaaain=new Scanner(System.in);
String newpasswords=aaaain.nextLine();
stu.modification(stu, newpasswords);
}
}
else System.out.println("wrong passwords!");break;
}
else System.out.println("we don't have  this one!");break;

}
}
}

解决方案 »

  1.   

    错误原因:
    学生-1;教师-2;管理员-3
    please enter num 1/2/3
    1
    请输入账号密码(账号是9位):
    200703777871121
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
    at java.util.ArrayList.get(Unknown Source)
    at com.schoolManager.Main.main(Main.java:37)
      

  2.   

    ArrayIndexOutOfBoundsException自己调试一下吧。
      

  3.   

    java.lang.ArrayIndexOutOfBoundsException  
    数组越界 
    你加个断点跟踪一下  哪里出错了
    很好找的 加断点
      

  4.   

     ArrayList.size为3
     你get第4个。 - - 
      

  5.   

    Main.java:37 断点在这行看看
      

  6.   

    因为你的ArrayList中保存的是staff等,可以用账号查询的时候直接arr.indexOf(zhanghao)这个得到的就是-1,那么你的arr.get(arr.indexOf(zhanghao));不就越界了吗?建议你这个用Map,以账号作为key,对象作为Value,然后处理起来会比较方便(查询的时候,根据key也就是说账号去查询对应的人)。
      

  7.   

    7楼的哥们(茫茫大海),你把我的程序还看了一遍????我刚学的JAVA,老师要我把学校信息管理系统的类封装下,我写的有点乱,代码也没有传完整,你还真看了的。。
      

  8.   

    断点调试会吗?
    IDE都有这东西吧善于搜索、调试检错 比你急吼吼的写神马“管理系统”要重要的多搜索引擎、编程工具都用不好 你还编什么劲呀勿喷,肺腑。
      

  9.   

    这个需要dubeg一下,查看是哪里使得数组溢出了
      

  10.   


     stu=(Students) arr.get(arr.indexOf(zhanghao));//根据账号找到这个元素 没有zhanghao上哪里取啊? 把 if(t)  if(at) if(aat) 与分别上面一句对调,再试