Хорошо, после понимания вопроса алгоритм, о котором я могу подумать, следующий.
- Открыть файл
- Читать строку из этого файла
- Если вы в первом ряду ->
3.1 Создайте файл для читаемой колонки
- Считать число из текущей строки
- Сохранить в соответствующем файле
- Продолжайте до тех пор, пока вы не закончите дамп, это оставит ваши файлы
N
, каждый из которых представляет столбец
- Теперь из всех созданных вами файлов:
- Прочитать каждый файл
- Запишите содержимое этого файла как обычную строку в выходной файл.
Примерно так:
file = File.open(myFile)
columns = File[] // columns is a file array, each one will contain a column from the original file
for each line in file
numbersInThatLine : Integer[]
numbersInThatLine = parseArrayFrom( line ) // created an array of int's from the given line
writeArraryToFiles( array=numbersInThatLine, files=columns ) // write each number in a separate file
end
close( file )
output = File.new()
for each file in columns
output.write( file )
end
close( output )
Итак, если ваш файл имеет
1 2 3 4
5 6 7 8
9 10 11 12
Вы откроете 4 файла, и на первом проходе у вас будет
file0 = 1
file1 = 2
file2 = 3
file3 = 4
Во втором проходе у вас будет:
file0 = 1 5
file1 = 2 6
file2 = 3 7
file3 = 4 8
И наконец:
file0 = 1 5 9
file1 = 2 6 10
file2 = 3 7 11
file3 = 4 8 12
Наконец, записав каждый файл в выходной файл, вы получите
1 5 9 // from file0
2 6 10 // from file1
3 7 11 // from file2
4 8 12 // from file3
Что является (если я правильно понял на этот раз) тем, что вам нужно.
Удачи!
Итак, файл, содержащий:
1 2 3 4
5 6 7 8
9 10 11 12
будет представлять матрицу:
[[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]]
??
Выполните следующие действия:
- Открыть файл
- Читать каждую строку
- Разобрать элементы
- Сохраните их в массиве.
Примерно так:
List<Integer[]> matrix = new ArrayList<Integer[]>();
List<Integer> currentRow;
BufferedReader reader = new BufferedReader( yourFile );
String line = null;
while((line = reader.readLine()) != null ) {
Scanner scanner = new Scanner( line );
currentRow = new ArrayList<Integer>();
while( scanner.hasNextInt()){
currentRow.add( scanner.nextInt() );
}
matrix.add( convertListToArray( currentRow )); // See: http://stackoverflow.com/questions/960431/how-to-convert-listinteger-to-int-in-java
}
Примечание: я даже не скомпилировал приведенный выше код, поэтому он может не работать