黑马程序员技术交流社区

标题: 麻烦众大虾帮忙看看这个错误到底怎么回事 [打印本页]

作者: 何超    时间: 2013-11-17 19:51
标题: 麻烦众大虾帮忙看看这个错误到底怎么回事
本帖最后由 何超 于 2013-11-18 08:55 编辑

复制代码
代码的编译没问题,运行的时候就出现角标越界异常!着实很纳闷,左看右看都觉得没问题啊,
运行的时候代码出错就是在  学生工具类 里面的  Integer.parseInt(info[ ])这个代码 说我角标越界 ···求告知到底怎么回事!!!
我输入的时候就是  
Nate,10,20,30
Dean,20,30,40
over
接着就报错!!!上看下看我感觉都没问题啊!!!

作者: 何超    时间: 2013-11-17 19:51

  1. import java.io.*;
  2. import java.util.*;
  3. //学生类
  4. class Student  implements Comparable<Student>
  5. {
  6.         private String name;
  7.                
  8.         private int  ma,cn,en;

  9.         private int sum;

  10.         Student(String name,int ma,int cn,int en)
  11.         {
  12.                 this.name=name;
  13.                 this.ma=ma;
  14.                 this.cn=cn;
  15.                 this.en=en;
  16.                 sum=ma+cn+en;
  17.         }

  18.         public String getName()
  19.         {
  20.                 return name;
  21.         }

  22.         public int getSum()
  23.         {
  24.                 return sum;
  25.         }

  26.         public int hashCode()
  27.         {
  28.                 return name.hashCode()+sum*7;
  29.         }

  30.         public boolean equals(Object obj)
  31.         {
  32.                 if(!(obj instanceof Student))
  33.                         throw new ClassCastException("类型不匹配");
  34.                 Student s=(Student)obj;

  35.                 return this.name.equals(s.name) && this.sum==s.sum;
  36.         }

  37.         public int compareTo(Student s)//让对象本身具备比较性 在数据传入的时候会自动进行比较无需再次调用
  38.         {
  39.                 int num=new Integer(this.sum).compareTo(new Integer(s.sum));
  40.                 if(num==0)
  41.                         return this.name.compareTo(s.name);
  42.                 return num;
  43.         }

  44.         public String toString()
  45.         {
  46.                 return "Student[" + name +","+ "ma" + "," + "cn" + "," + "en" +"]";
  47.         }
  48. }
  49. //学生工具类 输入信息并存入集合
  50. class StudentInfoTool<T>
  51. {
  52.         public static Set<Student> getStudents() throws IOException
  53.         {
  54.                 BufferedReader bufr=
  55.                         new BufferedReader(new InputStreamReader(System.in));

  56.                 String line=null;
  57.                
  58.                 Set<Student> stus=new TreeSet<Student>();

  59.                 while( (line=bufr.readLine() )!=null )
  60.                 {
  61.                         if("voer".equals(line))
  62.                                 break;
  63.                         String[] in=line.split(",");

  64.                         Student stu=new Student(in[0],
  65.                                                 Integer.parseInt(in[1]),
  66.                                                 Integer.parseInt(in[2]),
  67.                                                 Integer.parseInt(in[3]));//学生对象建立好了 然后放入集合

  68.                         stus.add(stu);//对象放入集合
  69.                 }
  70.                 bufr.close();

  71.                 return stus;
  72.         }

  73.         public static void write2File(Set<Student> stus) throws IOException
  74.         {
  75.                 BufferedWriter bufw=new BufferedWriter(new FileWriter("Student.txt"));       

  76.                 for(Student stu:stus)
  77.                 {
  78.                         bufw.write(stu.toString()+"\t");
  79.                
  80. //                        bufw.write(stu.getSum());
  81.                        
  82.                         bufw.newLine();

  83.                         bufw.flush();
  84.                 }       
  85.         }

  86.         public static Set<Student> getStudent() {
  87.                 // TODO Auto-generated method stub
  88.                 return null;
  89.         }
  90. }

  91. //主函数类
  92. class A
  93. {
  94.         public static void main(String[] args) throws IOException
  95.         {
  96.                 Set<Student> stus=StudentInfoTool.getStudents();

  97.                 StudentInfoTool.write2File(stus);
  98.         }
  99. }
复制代码

作者: 付凯鹏    时间: 2013-11-17 20:02
我运行了一下,你 if("voer".equals(line))这句代码写错了啊,应该是 if("over".equals(line))就对了吧,把voer改成over就行了吧。
作者: 何超    时间: 2013-11-17 20:19
付凯鹏 发表于 2013-11-17 20:02
我运行了一下,你 if("voer".equals(line))这句代码写错了啊,应该是 if("over".equals(line))就对了吧,把 ...

= =果然是这样!谢了!好几次都是代码打错字···看的眼花缭乱····:Q 还有个疑问。
就是照着那个错误来看,就是我在没有输入停止符的时候输入了不带 , 的一行数据然后敲了回车
这个时候就会出现错误, 是因为spit没有切割的原因么?那如果这个时候Student里的对象
应该就是name有值 其余三个是空  这个时候不是也合理么 没有规定Student对象一定要四个属性全部存在啊
为什么还是报错!
作者: FFF    时间: 2013-11-17 22:15
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2