Wypełnianie tablicy dwuwymiarowej.

0

Robie sobie ćwiczenie z książki i po skompilowaniu widzę że tablica jest wypełniona od drugiego wersu zamiast od pierwszego. Nie mogę dojść co zrobiłem źle, dlatego proszę o wskazanie błędu.

 
public class Main 
{public static void main(String[]args)
	{int i=0, j=0;
	int tab[][]=new int[4][];       /*  tworzenie tablicy */
	for(i=0;i<tab.length;i++)
		tab[i]=new int[i];     
	int licznik=10;             /*  wypełnianie tablicy   */
	for(i=0;i<tab.length;i++)
		{for (j=0;j<tab[i].length;j++)
			{tab[i][j]=licznik--;}
		}
	
	for(i=0;i<tab.length;i++)                              /* wyświetlanie tablicy  */
		{System.out.print("tab["+i+"]= ");
		for(j=0;j<tab[i].length;j++)
			{System.out.print(tab[i][j]+" "); }
		
		System.out.println("");
		}
	}
}

Z góry dziękuje za pomoc.

1

Pokaż nam jakie ćwiczenie robisz i popracuj nad formatowaniem kodu, bo jest okropne.

public class Main {
    public static void main(String[]args) {
    
        int i=0, j=0;
        int tab[][]=new int[4][];     /*  tworzenie tablicy */  
        
        
        for(i=0;i<tab.length;i++)
                tab[i]=new int[i];     
                
         /*  wypełnianie tablicy   */
        int licznik=10;    
        
        for(i=0;i<tab.length;i++) {
            for (j=0;j<tab[i].length;j++) {
                tab[i][j]=licznik--;
            }
        }
 
         /* wyświetlanie tablicy  */
        for(i=0;i<tab.length;i++) {
            System.out.print("tab["+i+"]= ");
            
            for(j=0;j<tab[i].length;j++) {
                System.out.print(tab[i][j]+" ");
            }
 
            System.out.println(); // Nie potrzebujesz dawać pustego stringa jeżeli chcesz wyświetlić sam koniec linii
        }
    }
}
0

Zobacz sobie ten kod, wypełnianie tablicy zaczynasz tak naprawdę od i = 1.

 /*
     * wypełnianie tablicy
     */
    for (i = 0; i < tab.length; i++) {
      for (j = 0; j < tab[i].length; j++) {
        System.out.println("i = " + i);
        tab[i][j] = licznik--;
      }
    } 

A co się stanie gdy przeniesiemy System.out linijkę wyżej, do:

    /*
     * wypełnianie tablicy
     */
    for (int i = 0; i < tab.length; i++) {
      System.out.println("i = " + i);
      for (int j = 0; j < tab[i].length; j++) {
        tab[i][j] = licznik--;
      }
    }

Zmieni się output i zobaczysz gdzie jest błąd ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.