java数组变量初始化

时间:2016-04-18 11:29:11

标签: java

大家好日子,我只想问一下这个怎么做.. 我想创建一个程序,我可以显示输入的所有日期,而不需要分隔符" /"所以我使用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]);
}

3 个答案:

答案 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的大小,因此您将尝试访问元素34 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] + " ");
        }
    }
}