Возникли проблемы при обращении двумерного массива? - PullRequest
2 голосов
/ 10 декабря 2011

Я пытаюсь отменить двойной массив, импортированный из файла .txt. Однако, когда я запускаю свою программу, она переворачивает только первую половину массива, а другая половина массива выводит 0. Какие-либо предложения? Вот мой код:

package arrayreverse;
import java.util.Scanner;
import java.io.*;

public class ArrayReverse {

    public static void main(String[] args) throws IOException {
        try{
            File abc = new File ("filelocation");
            Scanner reader = new Scanner(abc);
           int [][] a = new int[5][10];
           int [][] b = new int [5][10];
           for (int row = a.length - 1; row >= 0; row--){
               for (int col = a[row].length - 1; col >= 0; col--){
                   a[row][col] = reader.nextInt();
                   b[row][col] = a[row][col];
                   a[row][col] = b[4-row][9-col];
                   System.out.print(a[row][col]+" ");
               }
               System.out.println();
           }
        }
        catch (IOException i){
        }
    }
}

Ответы [ 2 ]

1 голос
/ 10 декабря 2011
a[row][col] = reader.nextInt();
b[row][col] = a[row][col];
a[row][col] = b[4-row][9-col]; //problem is here 
                               //until u reach half way b's elements have no 
                               //values assigned yet (0 by default)

Попробуйте следующее:

a[row][col] = reader.nextInt();
b[a.length - 1 - row][a[row].length - 1 - col] = a[row][col];

a и b должны быть противоположны друг другу, когда цикл завершен.

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

Попробуйте это ...

import java.util.Scanner;
import java.io.*;

public class Test {

public static void main(String[] args) throws IOException {
    try{
        File abc = new File ("file location");
        Scanner reader = new Scanner(abc);
        int [][] a = new int[5][10];
        int [][] b = new int [5][10];

        // Read the values into array b
        for (int row = a.length - 1; row >= 0; row--){
            for (int col = a[row].length - 1; col >= 0; col--){                 
                b[row][col] = reader.nextInt();                                     
            }

        }

        // add the values of b into a in the reverse order
        for (int row = a.length - 1; row >= 0; row--){
            for (int col = a[row].length - 1; col >= 0; col--){
                a[row][col] = b[4-row][9-col];
                System.out.print(a[row][col]+" ");
            }
            System.out.println();
        }
    }
    catch (IOException i){
        i.printStackTrace();

    }
}

}

...