java.lang.ArrayIndexOutOfBoundsException:2错误消息

时间:2014-04-11 15:34:36

标签: java

我正在编写一些代码,试图将字符串(01/04/2010)拆分为3个不同的整数。当我尝试运行它时,出现ArrayIndexOutOfBoundsException错误。

以下是代码:

public Date(String date) {

    String dayz[];
    dayz = date.split("/");

    int m=Integer.parseInt(dayz[0]);
    int d=Integer.parseInt(dayz[1]);
    int y=Integer.parseInt(dayz[2]);
    if(y<100) { 
        y=Integer.parseInt(dayz[2])+2000;
    }

    setComponents(m,d,y);


}

这是setComponents方法:

 public void setComponents(int month, int day, int year) {

    if (month < 1 || month > 12 || year < MIN_YEAR || day < 1 || day >     numDaysInMonth(month, year)) {
        throw new IllegalArgumentException();
    }
    this.month = month;
    this.day = day;
    this.year = year;

}

任何帮助?

2 个答案:

答案 0 :(得分:1)

您可以使用StringTokenizer。它更清洁,使用简单。

import java.util.StringTokenizer;

public class HelloWorld{
    public static void main(String []args){
        String a="01/04/2010";
        StringTokenizer st= new StringTokenizer(a,"/");
        int data[] = new int[3];
        int count =0;
        while(st.hasMoreElements())
        {
            data[count++]=Integer.parseInt(st.nextToken());
        }

        for(int i=0;i<3;i++)
            System.out.println(data[i]);
    }
}

答案 1 :(得分:0)

基于你的评论:哦,我刚刚意识到我应该检查04/10,这应该不起作用,它应该打印出一条消息。也许这就是错误的。有关如何改进代码的任何想法吗?

public Date(String date) {

  String dayz[];
  dayz = date.split("/");

  if(days.length < 3)
  {
    System.err.println("Invalid date: " + date + ". It should be in the format 'DD/MM/YYYY.");
  }
  else
  {
    int m=Integer.parseInt(dayz[0]);
    int d=Integer.parseInt(dayz[1]);
    int y=Integer.parseInt(dayz[2]);
    if(y<100) { 
      y=Integer.parseInt(dayz[2])+2000;
    }
    setComponents(m,d,y);
  }
}