2013-11-18 2 views
1

Мне нужно организовать этот массив. String [] students={"Paul", "A", "Paul", "B", "Mike", "B", "Cindy", "A", "Cindy", "B", "Cindy", "C"}Нужна помощь в преобразовании массива в другой массив в Java

Целью является

String [][] grades={{"Paul", "A", "B"} , {"Mike", "B"} , {"Cindy", "A", "B", "C"}}

Пожалуйста, помогите

Я попытался следующие:

int numberOfFirstGuyElements = StringUtils.countMatches(students, students[0]); 
for (int i = 0; i < numberOfFirstGuyElements*2; i++) { 
String s+i = students[i] + "," students[i+1]; 
} 

Я не могу динамически назначать имена массивов

+0

Добро пожаловать на StackOverflow. Пожалуйста, покажите нам весь код, который вы пытались до сих пор. Мы здесь, чтобы помочь вам написать критический код, а не написать его для вас. –

+0

Что вы написали до сих пор? Похоже, что писать очень тривиально. – KVISH

+0

Я пробовал, но ничего не мог получить. Я не знаю, как назначать имена массивов динамически – Elvis

ответ

2

Вы можете выполнить следующие действия для реализации упомянутой функции:

1 Объявите список, тип которого List< List<String> >. Он используется для хранения студентов-градации информации, как

[[Paul, A, B], [Mike, B], [Cindy, A, B, C]] 

2 Loop Студенческого массива вы объявили ниже и заполнить оценки каждого студента,

Возьми студенту Павла, например, студента класс список типа List<String> содержит [Paul, A, B]

String [] студентов = { "Пол", "А", "Пол", "B", "Майк", "B", "Синди", "А", "Синди", " B "," Синди "," C "}

3 Преобразуйте штырь ets-grades List (List< List<String> >) до классов String[][].

Ниже приведен пример с использованием вышеуказанных 3 шага:

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 


public class Example { 

public static void main(String[] args) { 
    String [] students={"Paul", "A", "Paul", "B", "Mike", "B", "Cindy", "A", "Cindy", "B", "Cindy", "C"}; 

    String[][] grades = convertArray(students); 

    System.out.println("Student - Grades iformation is as follows: "); 

    for(String[] stuGrade : grades) 
    { 
     System.out.println(Arrays.toString(stuGrade)); 
    } 
} 

public static String[][] convertArray(String[] students) 
{ 
    List<List<String>> stuGradeList = new ArrayList<List<String>>(); 

    List<String> tempStuGrade = new ArrayList<String>(); 
    for(int i =0; i< students.length; i++) 
    { 
     /* 
     * Handles Name information 
     */ 
     if(i%2 == 0) 
     { 
      if(!tempStuGrade.contains(students[i])) 
      { 
       if(tempStuGrade.isEmpty()) 
       { 
        tempStuGrade.add(students[i]); 
       }else 
       { 
        stuGradeList.add(new ArrayList<String>(tempStuGrade)); 

        /* 
        * Student changed 
        * 
        * Clear the original list and put the new Student name into temp list 
        */ 
        tempStuGrade.clear(); 
        tempStuGrade.add(students[i]); 
       } 
      } 

     }else 
     { 
      //Add Grade to list directly 
      tempStuGrade.add(students[i]); 


      if(i == students.length-1) 
      { 
       stuGradeList.add(new ArrayList<String>(tempStuGrade)); 
      } 
     } 
    } 

    String[][] grades = new String[stuGradeList.size()][]; 

    /* 
    * Put value of List<List<String>> into 2D Array (String[][]) 
    */ 
    for(int i = 0;i <stuGradeList.size(); i++) 
    { 
     grades[i] = new String[stuGradeList.get(i).size()]; 
     grades[i] = stuGradeList.get(i).toArray(grades[i]); 
    } 

    return grades; 
} 
} 

Сорта тип String [] [], его результат печатается в консоли выглядит следующим образом:

Student - Grades iformation is as follows: 
[Paul, A, B] 
[Mike, B] 
[Cindy, A, B, C] 
+0

Спасибо. Этот метод отлично работает – Elvis

Смежные вопросы