Bład, tablice wielowymiarowe

0

W konsoli zwraca rozmiar tablicy a nie wartosc. Plik wypelniony jest danymi w nastepujacy sposob:
STRING STRING
...3000x


import java.io.*;

import java.util.Scanner;

public class Main {

	static String[][] wczytajPlik(String nazwa) throws IOException {
	    String[][] array = new String[3000][2];
	    Scanner data = new Scanner(new File(nazwa));
	    int i = 0;
	    while (data.hasNextLine()){
	        array[i][0] = data.next();
	        array[i][1] = data.next();
	        i++;
	    }
	    data.close();
	    return array;
	}
	public static void main(String[] args) {
		try {
			String[][] okok = wczytajPlik("dane3.txt");
			System.out.println(okok[222][1]);
		}
		catch(Exception e){
			System.out.println(e.getMessage());
		}	
	}
}
```java
0

Co dokładnie jest wyświetlane?
Jak nie panujesz nad kodem to powinieneś zacząć od mniejszego przykładu a nie czytać plik na kilka tysięcy linii.
Pierwsze co mi przyszło na myśl to wyjątek przy zapisie poza tablicę. Index out of bound exception.

0

Sprawdź sobie czy w pliku tekstowym jest na pewno 3000 linii. Prawdopodobnie czytasz coś jeszcze. Dla pewności przetestuj dla 1000 linii.

0
Luziq napisał(a):

W konsoli zwraca rozmiar tablicy a nie wartosc.

> 	    while (data.hasNextLine()){
> 	        array[i][0] = data.next();
> 	        array[i][1] = data.next();

Sprawdzenie masz raz, a potem czytasz dwie linie. Ta druga nie musi wcale istnieć. Ponadto nie sprawdzasz wcale, czy i jest prawidłowym indexem tablicy.

Luziq napisał(a):
> 		catch(Exception e){
> 			System.out.println(e.getMessage());

Ten wyjątek jako message zwraca index, który czytasz, a który nie istnieje w tej tablicy.
Zamiast tego stosuj

e.printStackTrace();
0
szweszwe napisał(a):

Sprawdź sobie czy w pliku tekstowym jest na pewno 3000 linii. Prawdopodobnie czytasz coś jeszcze. Dla pewności przetestuj dla 1000 linii.

Dobra, dzięki za pomoc pliki do matury 2k16 z CKE maja nieodpowiednia ilośc lini, bo po stworzeniu pliku pętlą wszystko śmiga

0
Tig napisał(a):
Luziq napisał(a):

W konsoli zwraca rozmiar tablicy a nie wartosc.

> 	    while (data.hasNextLine()){
> 	        array[i][0] = data.next();
> 	        array[i][1] = data.next();

Sprawdzenie masz raz, a potem czytasz dwie linie. Ta druga nie musi wcale istnieć. Ponadto nie sprawdzasz wcale, czy i jest prawidłowym indexem tablicy.

Luziq napisał(a):
> 		catch(Exception e){
> 			System.out.println(e.getMessage());

Ten wyjątek jako message zwraca index, który czytasz, a który nie istnieje w tej tablicy.
Zamiast tego stosuj

e.printStackTrace();

jak pisalem nizej okazło sie ze pliki od CKE sa bledne ale równiez wielkie dzieki

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