Problem tablicy dwuwymiarowej.

0

Oto kody:

import java.io.*;

public class Tablica
{

public char[][] pobierzTablice(int wspx, int wspy){

try
{

File plikMapy = new File("mapka.txt");

  FileReader czytaczF = new FileReader(plikMapy);
  BufferedReader czytacz = new BufferedReader(czytaczF);

  String wiersz= null;
  int x;
  int y=0;

char[][] tabl= new char[32][20];

    while ((wiersz = czytacz.readLine()) != null )
    {

   char hi[] = wiersz.toCharArray();

//System.out.println(hi[pozycja]); 

   for (x=0 ; x<32 ; x++) {     
       tabl[x][y] = hi[x];
   }
    y++;

    }

    czytacz.close();

    } catch (Exception zd) {
   zd.printStackTrace();

}
return tab; <----------- here is a problem..

}

}

Pytanie brzmi jak można zwrócić tablice lub chociaż wartość tablicy. Próbowałem return tab[1][1]; - rowniez nie działa. "variable tabl".

Dzieki za każdą pomoc i wskazówkę !

[ Program wczytuje do tablicy dwuwymiarowej z pliku txt (działa).]

0

Pewnie dlatego, ze zwracasz tab, nie tabl... Na przyszlosc uzywaj tagow code i pisz co wypisuje kompilator.

0

Do postu źle wkleiłem - oczywiście ma być:

return tabl;

i tak własnie mam w kodzie i nie działa... a komunikat kompilatora to :

C:\Program Files\Java\jdk1.5.0_08\bin\.\Tablica.java:55: cannot find symbol
symbol  : variable tabl
location: class Tablica
    tabl[wspx][wspy];
    ^
1 error

zaznaczam już że próbowałem

return tabl[][];
return tabl;
return tabl[x][y];

jak również dopisywałem metodę :


public char[][] oddaj(int xx, int yy){
return tabl[xx][yy];

p.s. na forum javy sun.java.com nikt nie znal odpowiedzi na to pytanie...
google równiez nic nie "mówi".

pozdrawiam.

0

Deklarację tablicychar[][] tabl= new char[32][20];musisz umieścić przad blokiem try.

0

Dzieki ! działa - czyli chodziło o to, że deklaracja tablicy nie była widoczna dla klasy (metody?), kompilator nie widział zmiennej tablicowej. Czy jeszcze inaczej mam to rozumieć ?

0

Tak, tablica byla niszczona po wyjsciu z bloku try, wiec w momencie zwracania teoretycznie juz nie istniala (a w kazdym razie nie miales juz do niej referencji).

0

Zmienna zadeklarowana w bloku try nie może być widziana poza nią. Wynika to z możliwości wystąpienia wyjątku przed jej deklaracją. Prog się wysypie, a Java nie będzie wiedziała co ma zwrócić. Jeśli chcesz zwrócić zmienną zadeklarowaną w bloku musisz to zrobić z bloku. Dodając odpowiedni return (np. null) na końcu metody.

0

Dzięki za wyczerpujące informacje :-)

0

Dzięki za wyczerpujące informacje :-)

0

podwójnie dziękuje wyszło ;-)

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