大家好日子,我只想问一下这个怎么做.. 我想创建一个程序,我可以显示输入的所有日期,而不需要分隔符" /"所以我使用split方法来做到这一点。更清楚这是我想做的事情:
Input
Enter Date:10/11/1994
Enter Date:11/10/2008
Enter Date:12/12/2010
Enter Date:08/12/1999
Enter Date:09/10/2005
Output:
10 11 1994
11 10 2008
12 12 2010
08 12 1999
09 10 2005
问题是我有错误
在System.out.println(comp[ctr1]);
中它说我必须初始化comp
变量,实际上我不会使用初始化。我尝试使用String[] comp=new String[date]
和String[] comp=new String[5]
,但仍然是错误..提前致谢..
String[] date=new String[5];
String[] comp;
int mm, dd, yyyy;
for(int ctr=0;ctr<date.length;ctr++){
System.out.print("Enter Date: ");
date[ctr]=input.nextLine();
comp=date[ctr].split("/");
mm=Integer.parseInt(comp[0]);
dd=Integer.parseInt(comp[1]);
yyyy=Integer.parseInt(comp[2]);
}
for(int ctr1=0;ctr1<date.length;ctr1++){
System.out.println(comp[ctr1]);
}
答案 0 :(得分:1)
为什么重新发明轮子?家庭作业?为什么不使用java工具来实现你的目标?
DateFormat input = new SimpleDateFormat("MM/dd/yyyy");
DateFormat output = new SimpleDateFormat("MM dd yyyy");
Date d = input.parse("10/11/1994");
System.out.println(output.format(d));
<强>输出:强>
10 11 1994
答案 1 :(得分:1)
你首先使用“dd / mm / yyyy”进行拆分
String [2] dateFormate = date [i] .split [“:”];
使你的处理在dateFormate [1];
我觉得每件事都会好起来
答案 2 :(得分:0)
首先,String[] comp=new String[5]
确实有效,它将删除编译器错误,发生后续错误,因为您正在访问超出数组长度的数组的索引。从技术上讲,这不应该发生,因为声明String[] comp=new String[5]
将使您的数组与date
数组具有相同的大小,您将其用作第二个循环条件。但是你的错误发生在第一个循环中。
您重新初始化comp
数组,如果输入正确,则现在大小为3
,而不是大小5
。并且由于您的第二个循环将使用date
数组作为条件(仍具有5
的大小,因此您将尝试访问元素3
和4
comp
数组,超出了新重新分配的数组的长度。这是导致问题的代码comp=date[ctr].split("/");
。
使用您的方法,我建议在comp
数组中转换2d
数组,以便存储日期数量和日期部分。
现在代码可能看起来像这样:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String[] date=new String[5];
// make comp a 2d Array
String[][] comp = new String[5][];
int mm, dd, yyyy;
for(int ctr=0;ctr<date.length;ctr++){
System.out.print("Enter Date: ");
date[ctr]=input.nextLine();
// At index ctr store the different parts of the date
comp[ctr]=date[ctr].split("/");
// This three steps can cause an ArrayOutOfRangeException,
// because the indexes 0,1,2 are depending on how many elements the split returned
// You might want to add this here, but i´ll leave it out.
// But since you never use mm, dd and yyyy you may aswell leave it out
mm=Integer.parseInt(comp[ctr][0]);
dd=Integer.parseInt(comp[ctr][1]);
yyyy=Integer.parseInt(comp[ctr][2]);
}
for(int ctr1=0;ctr1<date.length;ctr1++){
for(int j = 0;j<comp[ctr1].length;++j) {
System.out.println(comp[ctr1][j] + " ");
}
}
}