我需要创建一个包含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;
答案 0 :(得分:1)
grades
是一个ArrayList
,就其而言,您只需要为其添加整数。它不知道什么时候应该打破。索引3
只是索引Integer
之后的2
。如果要将每个值组合成组合值,可以执行grades.add(Integer.parseInt(parts[5]+parts[6]+parts[7]))
,也可以在将每个3值添加到grades
后插入换行符。您还可以使用grades
类型List
的子列表制作List
个Integer
。
答案 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
}
}