[英]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.