Reklama
Pokazuje wyniki od 1 do 7 z 7

Temat: [JAVA] Tablice - podstawowe operacje

  1. #1

    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    662
    Siła reputacji
    17

    Domyślny [JAVA] Tablice - podstawowe operacje

    Okay, orłem w programowaniu nie jestem i potrzebuję BARDZO łopatologicznych porad co do tablicy dwuwymiarowej, np 3x3 (tak, głupie pytanie, ale jest późno i net ni pomaga)
    1)Bardziej opłaca się tworzyć łopatologicznie, starym sposobem w stylu:
    Kod PHP:
    tab = new char [size][size];
    		for(int i=0;i<size;i++)
    			for(int j=0;j<size;j++)
    				tab[i][j]=0;
    czy klamrowo:
    Kod PHP:
    char [][]tab;
    tab= new char [][]{{' ',' ',' '},
    		           {' ',' ',' '},
    		          {' ',' ',' '}};
    2)jak wrzucić ustalony element, np & (jako znaczek) na konkretne pole w tablicy(chodzi mi o to że mam sobie metodę tworzącą tablicę i nie mogę się dobrać do środka...)? (tzn wprowadzam współrzędne pola, wciskam enter i znaczek objawia się tam gdzie chcę)
    3)wreszcie, jak sprawdzić czy tablica ma jakieś wolne miejsca/jest pełna? Kombinowałem coś z length i boolean ale coś musiałem pokręcić albo length się nie nadaje ;p

    ktoś coś o rysowaniu też mógłby rzucić, w sensie jak takie coś zgrabniej wypisać:
    Kod PHP:
    for(int i=0;i<tab.length;i++){
    	System.out.println(" \n------------");
    	for(int j=0;j<tab.length;j++){
    		System.out.print(" |"+tab[i][j]+"| "); }
    
    			}
    System.out.println("\n---------------\n");
    odwdzięczę się ofc ;d
    Ostatnio zmieniony przez Chrill : 18-10-2013, 03:30

  2. #2
    Avatar Absherr
    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    578
    Siła reputacji
    16

    Domyślny

    1. Jeżeli potrzebujesz na początku włożyć tam jakieś wartości to metoda pierwsza jest lepsza. Łatwiej jest zmienić jedną rzecz w pętli, niż pieprzyć się z przecinkami i nawiasami klamrowymi. No i stworzenie dużych tablic jest dużo łatwiejsze/przyjemniejsze/bezpieczniejsze/ładniejsze.

    Drugą sprawą jest to, że w javie typy podstawowe mają swoje domyślne wartości. Dla intów, doubli, floatów jest to 0 albo 0.0. booleany są ustawiane na fałsz, a chary właśnie na 0 (zwróć uwagę, że to nie jest '0' tylko 0, http://docs.oracle.com/javase/tutori...datatypes.html)

    Więc w pętli nie musisz robić
    Kod:
    tab[i][j]=0;
    Bo masz już to zrobione z automatu. Więc w sumie nie potrzebujesz w ogóle pętli tam. No chyba, że chcesz tam trzymać od początku coś innego.

    2. http://ideone.com/X1agrn
    EDIT: teraz zauważyłem, że dwa razy jest new char[size][size]. Wystarczy tylko to pierwsze./EDIT

    3.
    wreszcie, jak sprawdzić czy tablica ma jakieś wolne miejsca/jest pełna? Kombinowałem coś z length i boolean ale coś musiałem pokręcić albo length się nie nadaje ;p
    Co masz na myśli pisząc, że tablica ma wolne miejsca/jest pełna? Napisz dokładnie co chcesz osiągnąć.
    Ostatnio zmieniony przez Absherr : 18-10-2013, 12:39

  3. Reklama
  4. #3
    Avatar LGTK
    Data rejestracji
    2009
    Położenie
    Podlaskie, Białystok
    Wiek
    32
    Posty
    267
    Siła reputacji
    15

    Domyślny

    Cytuj Chrill napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    3)wreszcie, jak sprawdzić czy tablica ma jakieś wolne miejsca/jest pełna? Kombinowałem coś z length i boolean ale coś musiałem pokręcić albo length się nie nadaje ;p
    Kolega up już Ci w zasadzie napisał jak. Jeśli domyślnie chary masz ustawione na 0 to wystarczy zrobić pętle po całej tablicy i sprawdzać czy jakiś z charów ma wartość domyślną.
    Dajmy na to funkcja zwracająca pozycje pierwszego wolnego elementu.
    Kod:
    static int getFreePos(char tablica[])
    	{
    		for (int i = 0; i < tablica.length; i++)
    		{
    		   if (tablica[i] == 0) return i;
    		}
    		return -1;
    	}
    PIŻMAG

  5. #4

    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    662
    Siła reputacji
    17

    Domyślny

    Cytuj Absherr napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    o masz na myśli pisząc, że tablica ma wolne miejsca/jest pełna? Napisz dokładnie co chcesz osiągnąć.
    true do czasu wypelnienia wszystkich wolnych miejsc na planszy ;D

    Cytuj Absherr napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Drugą sprawą jest to, że w javie typy podstawowe mają swoje domyślne wartości. Dla intów, doubli, floatów jest to 0 albo 0.0. booleany są ustawiane na fałsz, a chary właśnie na 0 (zwróć uwagę, że to nie jest '0' tylko 0
    jak mam tylko tab[i][i] to wywala mi
    tab.java:8: error: not a statement
    tab[i][j];
    ^
    dla metody wyglądającej tak:
    Kod PHP:
    char [][]tab;
    
       public void setSize( int size ) {
    	tab = new char [size][size];
            for(int i=0;i<size;i++)
                for(int j=0;j<size;j++)
                    tab[i][j]=0;
       }
    btw jadę na linuxie, notatniku i konsoli, więc cudów nie ma ;d

    @down
    używam netbeansa na windowsie, wiem co potrafi, sęk w tym że skoro mi ciągle podpowiada to nie zwracam uwagi na to jak kod wygląda :D
    no ale, jak naprawie winde to będę jechał na fasolkach ))
    Ostatnio zmieniony przez Chrill : 18-10-2013, 12:41

  6. #5
    Avatar Absherr
    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    578
    Siła reputacji
    16

    Domyślny

    true do czasu wypelnienia wszystkich wolnych miejsc na planszy ;D
    Odwrotny warunek: pytamy czy już jest pełna. Zmodyfikowany kod LGTK.
    Kod:
    static boolean isFull(char tablica[][])
    	{
    		for (int i = 0; i < tablica.length; i++)
    		{
    			for(int j=0; j<tablica[i].length; ++j)
    				if (tablica[i][j] == 0) return false;
    		}
    		return true;
    	}


    jak mam tylko tab[i][i] to wywala mi ...
    Wrzuć cały kod.


    btw jadę na linuxie, notatniku i konsoli, więc cudów nie ma ;d
    Pobierz sobie IntelliJ, Eclipsa albo chociaż Netbeansa. Będziesz popełniał 80% błędów mniej*.


    * - niepoparte żadnymi badaniami.
    Ostatnio zmieniony przez Absherr : 18-10-2013, 12:53

  7. #6

    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    662
    Siła reputacji
    17

    Domyślny

    Cytuj Absherr napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Wrzuć cały kod.
    jak widać, męczę kóło i krzyżyk ;d
    Kod PHP:
    class Game {
    char [][]tab;
    
       public void setSize( int size ) {
    	tab = new char [size][size];
            for(int i=0;i<size;i++)
                for(int j=0;j<size;j++)
                    tab[i][j]=0;//jak jest samo tab[i][j] to blad wywala
       }
    
    public void setO( int x, int y ) {  
    tab[x][y]='O';
    
     } 
    
    //   public void setX( int x, int y ) {   }
    
       public String toString() {
    	for(int i=0;i<tab.length;i++){
        	System.out.println(" \n------------");
        	for(int j=0;j<tab.length;j++){
            System.out.print(" |"+tab[i][j]+"| "); }
    
                }
    	System.out.println("\n------------\n");  
    	String s=tab.toString();
    	return s;
    
       }
    
    //   public boolean anyEmpty() {   }
    }
    
    class Start{
    public static void main(String[] args){
    Game g=new Game();
    g.setSize(3);
    g.toString();
    int a=0;
    int b=0;
    g.setO(a,b);
    g.toString();
    	}
    }
    @down
    no mówie, głupie błędy robię jeszcze :P
    za tutorial się wezmę, no ale chwilowo mam trudności z wygospodarowaniem czasu na to, bo nie tylko jave mam na studiach ;p
    Ostatnio zmieniony przez Chrill : 18-10-2013, 13:04

  8. #7
    Avatar Absherr
    Data rejestracji
    2008
    Położenie
    Kraków
    Posty
    578
    Siła reputacji
    16

    Domyślny

    Okay. Weź się za jakiś tutorial o javie ;d Jak dasz samo tab[i][j] w tej pętli to masz linijkę, która nie jest żadna instrukcją. Więc kompilator krzyczy o tym. Jak musisz to daj tab[i][j]=0; a najlepiej to wywal te pętle.
    Kod:
    public void setSize( int size ) {
            tab = new char [size][size];
        }
    Ostatnio zmieniony przez Absherr : 18-10-2013, 13:00

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. [C] tablice
    Przez Terr w dziale Programowanie
    Odpowiedzi: 8
    Ostatni post: 13-02-2014, 19:48
  2. Odpowiedzi: 11
    Ostatni post: 09-02-2014, 22:16
  3. [java][map] operacje
    Przez Chrill w dziale Programowanie
    Odpowiedzi: 4
    Ostatni post: 06-02-2014, 14:54
  4. [8.62]Podstawowe funkcje ...
    Przez Mistyk w dziale Tibia
    Odpowiedzi: 1
    Ostatni post: 01-12-2010, 20:07
  5. [Lua] Od zera do skryptera, czyli LUA: Pętle i tablice*
    Przez Grim90 w dziale Artykuły developerskie
    Odpowiedzi: 9
    Ostatni post: 21-08-2010, 02:47

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •