Wczytywanie danych z pliku do tablicy dwuwymiarowej. Wyznaczanie kolumny o największej sumie elementów.

0

Witam serdecznie. Robię takie zadanie: * Plik tekstowy ‘tablicaDwa.txt’ ma postać:

  • 3 4
  • 1 2 3 4
  • 5 6 7 8
  • 9 0 1 2
  • Pierwsza linia w pliku tekstowym to informacje o ilości odpowiednio
  • wierszy i kolumn tablicy dwuwymiarowej. Kolejne wiersze w pliku to
  • kolejne wiersze tablicy dwuwymiarowej. Pobierz z pliku tekstowego dane
  • do tablicy dwuwymiarowej i wyznacz kolumnę o największej sumie
  • elementów
public class Zad2Plik {
    public static int biggestColumn(int[][] tab) {
        int biggestSum = 0;
        int currentSum = 0;
        for (int i = 0; i < tab.length; i++) {
            currentSum = 0;
            for (int j = 0; j < tab[i].length; j++) {
                currentSum += tab[j][i];
            }
            if (currentSum > biggestSum) {
                biggestSum = currentSum;
            }
        }
        return biggestSum;
    }


    public static void odczytTablicy2(String tablicaDwa) {

        try {
            FileReader fr = new FileReader(tablicaDwa);
            Scanner sc = new Scanner(fr);

            String[] sizeArray = sc.nextLine().split(" ");
            int[][] tab = new int[Integer.parseInt(sizeArray[3])][Integer.parseInt(sizeArray[4])];
            for (int i = 0; i < tab.length; i++) {
                for (int j = 0; j < tab[i].length; j++) {
                    tab[i][j] = sc.nextInt();
                }
            }
            System.out.println("The column of the biggest sum is " + biggestColumn(tab));
        } catch (FileNotFoundException e) {
            e.printStackTrace();

        }
    }

    public static void main(String[] args) throws Exception {
    odczytTablicy2("tablicaDwa.txt");
    }
}

Napisałem ten kod który się nie kompiluje, Kompilator wywala błąd: ArrayIndexOutOfBoundsException: 3 . Podejrzewam, że coś pomieszałem z metodą licząca największą kolumnę. Również nie jestem pewien czy poprawnie odebrałem dane z pliku. Czy dobrze okresliłem z pierwszego wiersza liczbę kolumn i wierszy.
Dziękuje za pomoc. Pozdrawiam.

0

Ten błąd, to dowód, że w końcu powinieneś ogarnąć debuggera.

Masz odwołanie do sizeArray[3], a z treści błędu wynika, że ta tablica nie ma elementów o tym indeksie.

1

@Haskell, ten post, to dowód, że powinieneś przeczytać post nim na niego odpowiesz.
@devKoksu, Twoja metoda odczytTablicy2 to jedno wielkie WTF.
Czytasz tylko pierwszy wiersz z pliku, wymiary tablicy ustalasz na podstawie nieistniejących danych:

int[][] tab = new int[Integer.parseInt(sizeArray[3])][Integer.parseInt(sizeArray[4])];

zamiast 3 i 4 winno być 0 i 1.

1 użytkowników online, w tym zalogowanych: 0, gości: 1