ShortBuffer и матрица в Java - PullRequest
       12

ShortBuffer и матрица в Java

0 голосов
/ 04 декабря 2011

У меня проблема с ShortBuffer. Это мой код:

FileChannel fc = new FileInputStream("C:/Dane DMS/"+names2).getChannel();
ByteBuffer bb = ByteBuffer.allocateDirect((int) fc.size());
while (bb.remaining() > 0) fc.read(bb);
fc.close();
bb.flip();
// choose the right endianness
ShortBuffer sb = bb.order(ByteOrder.BIG_ENDIAN).asShortBuffer();

В этом файле у меня есть матрица.

111 222 333 123
444 555 666 456
777 888 999 789
098 765 432 321

Мне нужно изменить эту матрицу на:

098 765 432 321
777 888 999 789
444 555 666 456
111 222 333 123

Я должен изменить эту матрицу или создать цикл, который начнется с номера 098 и закончится номером 123.

Я не печатаю эту матрицу. Я использую:

for(int i = 0; i<=1200; i++)
                   {
                       for(int j = 0; j<=1200 ; j++)
                       {

                       }

                   }

до пересечения матрицы, но таким образом я начинаю с номера 111, и мне нужно начинать с 098 и заканчивать в 123.

Ответы [ 2 ]

1 голос
/ 04 декабря 2011

Вы можете попробовать это

FileChannel fc = new FileInputStream("C:/Dane DMS/"+names2).getChannel();
ByteBuffer bb = ByteBuffer.allocateDirect((int) fc.size());
while (bb.remaining() > 0) fc.read(bb);
fc.close();
bb.flip();
// choose the right endianness
ShortBuffer sb = bb.order(ByteOrder.BIG_ENDIAN).asShortBuffer();

short[][] Matrix = new short[1201][1201];
for(int i = 0; i<=1200; i++)
{
    for(int j = 0; j<=1200 ; j++)
    {
        Matrix[1200-i][j] = sb.get(i*1201+j);
    }
}
0 голосов
/ 04 декабря 2011

Так что вам нужно повернуть вспять строки? Для этого вам нужно определить длину строки. Затем вы можете поменять местами первый и последний ряд, затем второй последний и второй ряд и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...