2013-07-24 2 views
0

У меня был String, и я смог преобразовать его в Vector<Integer>.Преобразование вектора целых чисел в 2D-массив

public class VectorConverter { 
public static Vector <Integer> v (String s) { 
    Vector<Integer> myVec = new Vector(); 

    //Convert the string to a char array and then just add each char to the vector 
    char[] sChars = s.toCharArray(); 
    int[] sInt= new int [sChars.length];; 
    for(int i = 0; i < s.length(); ++i) { 
     sInt[i]= Character.getNumericValue(sChars[i]); 
     myVec.add(sInt[i]); 
    } 

    return myVec; 
}} 

Теперь я хочу, чтобы преобразовать его в массив 2D int (int[][]). Например, если у меня есть [0,1,0,0] станет вектор-столбец, что-то вроде этого

0 
1 
0 
0 

Любые идеи?

+0

о том, что размеры ?? Первая проблема, которую я вижу. После того, сколько элементов вы хотите изменить строку –

+0

в качестве примера, который я дал, я хочу иметь массив размера (4,1) – nami

ответ

0

Работа с Vector является неразумным, если не использовать древнюю версию JRE. Я предлагаю вам перейти на List и основывать свой ответ соответственно. Кроме того, я озадачен тем, почему вы конвертируете в Integer. Вы можете работать непосредственно с char [] следующим образом.


Вы можете попробовать следующее для входа, как этот [[4,2,6][....]]

ArrayList<ArrayList<Integer>> table = new ArrayList<ArrayList<Integer>>(); 
char[] chars = myString.toCharArray(); 
ArrayList<Integer> current = null; 
for(int i=1; i<chars.length-1; ++i) { // To avoid parsing begining and end of the array 
    char c = chars[i]; 
    if(c == '[') 
     table.add(current = new ArrayList<Integer>()); 
    if(c == ']') 
     continue; 
    current.add(Character.getNumericValue(c)); 
} 
int[][] result = table.toArray(new int[0][0]); // Maybe this will fail and you'll have to use Integer[][] instead 
0

Что-то вроде этого?

int[][] result = new int[myVec.size()][]; 

for(int i = 0; i < myVec.size(); i++) { 
    result[i] = myVec.get(i); 
} 
Смежные вопросы