Wpis z mikrobloga

Mirki z #programowanie, uczę się javy i nie mogę poradzić z jednym ćwiczeniem. Trzeba wypełnić nieregularną tablicę intami 1-10 z czego tablica ma w 1 rzędzie 4 komórki, w drugim 3, w trzecim dwie, w czwartym jedną. Trzeba to zrobić wykorzystując pętlę while. Doszedłem do tego etapu:

public class cw122
{
public static void main(String[]args)
{
int tab[][]=new int [4][];
tab[0]=new int[4];
tab[1]=new int[3];
tab[2]=new int[2];
tab[3]=new int[1];

int wypelniacz=1;
int j=0;
et1:
for (int i=0; i<tab.length; i++)
{

while(j<tab[0].length)
{
++j;
tab[i][j]=wypelniacz++;
System.out.println("tablica: "+tab[i][j]+" rząd "+i);
continue et1;
}

}

Ktoś pomoże i napisze dlaczego tak to się robi?
  • 24
@greedo:
odpal sobie debugger i zobacz co tam wyczyniasz.

int wypelniacz = 1;
int j = 0;
for (int i = 0; i < tab.length; i++) {
j = 0;
while (j < tab[i].length) {

tab[i][j] = wypelniacz++;
System.out.println("tablica: " + tab[i][j] + " rząd " + i);
j++;
}
}
@szwe: Chciałem przepisać, ale faktycznie - dzięki, działa. Tylko dlaczego 'j' deklaruje się znowu jako 0 w pętli for skoro już przed nią jest zadeklarowane?
@greedo: 2 rzeczy.
1. Nie rób nigdy takich wynalazków jak z tym et1 bo te javove labelki to taki trochę go to - jest to zła rzecz.
2. Ogarnij debugger. Zapewne piszesz w jakimś IDE, czy to eclipse czy intellij i masz tam w pakiecie debugger którego nauka obsługi zajmie ci godzinę a pomaga tyle, ze się w pale nie mieści.
@kodyak: @szwe: To jeszcze takie pytanie, czy ja dobrze zrozumiałem ćwiczenie:

Stwórz trójwymiarową tablicę dla wartości typu int (będzie to struktura, którą można

sobie wyobrazić jako prostopadłościan składający się z sześcianów; każdy sześcian będzie

pojedynczą komórką). Powinna umożliwiać przechowywanie trzydziestu wartości.

Poszczególne komórki wypełnij liczbami od 30 do 59. Zawartość wyświetl na ekranie.


int tab[][]=new int[31][30];
int wypelniacz=30;

for (int i=0; i<tab.length; i++)
{
wypelniacz=30;
for (int j=0; j<tab[j].length; j++)
@szwe: A to? Czy to o to chodzi w tym ćwiczeniu? W tej książce nie było przykładu tablicy 3d

int tab[][][]=new int[31][30][30];
int wypelniacz=30;

for (int i=0; i<tab.length; i++)
{

for (int j=0; j<tab[j].length; j++)
{ wypelniacz=30;
for (int k=0; k<tab[k].length; k++)
{
tab[i][j][k]=wypelniacz++;

System.out.println("rząd "+i+" komórka "+k+" w komórce "+k+" wartość: "+tab[i][j][k]);
}
}

}
}
@greedo: no to co napisałeś na 3 wymiary. Spróbuj to sobie narysować. Problem w tym że ja nie wiem jakie to powinno mieć wymiary. To co zrobiłeś ma dużo większą pojemność a miało przechowywać 30 wartości.