繁体   English   中英

如何从数组中的子字符串创建一个数组列表对象

[英]How to create an arraylist object from substrings in an array

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

我究竟做错了什么? 我该如何解决?

代码:

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

问题在于输出:'8879599172'

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

您将所有值存储在一维 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
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM