如何从数组

时间:2015-08-31 14:20:50

标签: java arrays string arraylist

我需要创建一个包含5个字符串的String[],每个字符串都带有多个子字符串,数据用逗号分隔,我必须将这个int数组转换为ArrayList来分割子字符串按此顺序:数字&#1,3; 1,2,3,4,5'是学生证号码。 ' john,suzan,jack,erin,adan'是名字等等。但是,我遇到的唯一问题是当我试图打印成绩时,例如:' 88,79,59'进入打印的ArrayList对象:887959(1个arraylist对象),NOT 88(1个arraylist对象),79(另一个arraylist对象),...

我做错了什么?我该如何解决这个问题?

代码:

String[] kaizer = 
        {

            "1,John,Smith,John1989@gmail.com,20,88,79,59",
            "2,Suzan,Erickson,Erickson_1990@gmailcom,19,91,72,85",
            "3,Jack,Napoli,The_lawyer99yahoo.com,19,85,84,87",
            "4,Erin,Black,Erin.black@comcast.net,22,91,98,82",
            "5,Adan,Ramirez,networkturple66@gmail.com,23,100,100,100"
        };
ArrayList<Integer> grades = new ArrayList<Integer>(); 
for (int i = 0; i < kaizer.length; i++) {
    String s = kaizer[i]; //volatile reference
    String[] parts = s.split(","); 
    //volatile reference
    String id = parts[0];
    String name = parts[1];
    String lastname = parts[2];
    String email = parts[3];
    String age = parts[4];
    grades.add(Integer.parseInt(parts[5])); 
    grades.add(Integer.parseInt(parts[6]));
    grades.add(Integer.parseInt(parts[7]));
    //Widget w = new Widget(id, name, num);
    //mywidgets.add(w);
}

这应该像这样打印一组子串:

887959 
917285
858487
919882
100100100

System.out.println(grades.get(0)); 
System.out.println(grades.get(1));
System.out.println(grades.get(2));
System.out.println(grades.get(3));
System.out.println(grades.get(4));

相反......它打印:

8879599172

问题在于输出:&#39; 8879599172&#39;

2 个答案:

答案 0 :(得分:1)

grades是一个ArrayList,就其而言,您只需要为其添加整数。它不知道什么时候应该打破。索引3只是索引Integer之后的2。如果要将每个值组合成组合值,可以执行grades.add(Integer.parseInt(parts[5]+parts[6]+parts[7])),也可以在将每个3值添加到grades后插入换行符。您还可以使用grades类型List的子列表制作ListInteger

答案 1 :(得分:0)

您将所有值存储在一维ArrayList中,在您的场景中,您应该考虑使用二维ArrayList。

ArrayList<ArrayList<Integer>> grades = new ArrayList<ArrayList<Integer>>(); 
for (int i = 0; i < kaizer.length; i++) {
    String s = kaizer[i]; //volatile reference
    String[] parts = s.split(","); 
    //volatile reference
    String id = parts[0];
    String name = parts[1];
    String lastname = parts[2];
    String email = parts[3];
    String age = parts[4];

    ArrayList<Integer> subList = new ArrayList<Integer>();
    subList.add(Integer.parseInt(parts[5])); 
    subList.add(Integer.parseInt(parts[6]));
    subList.add(Integer.parseInt(parts[7]));
    grades.add(i, subList);

    //Widget w = new Widget(id, name, num);
    //mywidgets.add(w);
}

然后,您可以遍历每个学生的成绩:

//for each student
for(ArrayList<Integer> list : grades)
{
    for(int grade : list)
    {
        //do something with each grade
    }
}