我正在编写一些代码,试图将字符串(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;
}
任何帮助?
答案 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);
}
}