The type of the expression must be an array type but it resolved to Macierz

0

Wyskakuje mi ten bład co w temacie macie pomysł co robie nie tak??

package macierz;

public class Macierz {

    private int kolumny,wiersze;
    private int[][] tab; 

    public Macierz() {

    }

    public Macierz(int kolumny, int wiersze) { 
        this.kolumny=kolumny; 
        this.wiersze=wiersze; 
    } 

    public int getDlugosc(){
        return tab.length;
    }

    public void setKolumny(int kolumny){
        this.kolumny=kolumny;
    }
    public int getKolumny(){
        return kolumny;
    }

    public void setWiersze(int wiersze){
        this.wiersze=wiersze;
    }

    public int getWiersze(){
        return wiersze;
    }

    public int[][] utworz(){
        this.tab=new int[this.kolumny][this.wiersze];
        for(int i=0;i<this.kolumny;i++)
            for(int j=0;j<this.wiersze;j++){
            this.tab[i][j]=(int)(Math.random()*10);
            }
            return this.tab;            
    }
    public void wypisz(){ 
        System.out.println("Macierz: "); 
        for(int i=0;i<this.tab.length;i++){ 
            for(int j=0;j<tab[i].length;j++){ 
                    System.out.print(tab[i][j]); 
        } 
            System.out.println(); 
        }
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
    Macierz m= new Macierz(3,4);    
    Macierz f = new Macierz(3,4);
    m.utworz();
    m.wypisz();
    f.utworz();
    f.wypisz();

    for(int i=1; i<m.getDlugosc(); i++){
        for (int j=i+1; j<m.getDlugosc()+i; j++){
            m[j][i] = -f[j][i] / f[i][i];
        }
    }
    /*for i:=1 to N do
          begin 
            for  j:=i+1 to N+i do      
                    mji := - fji / fii;
            for  j=i+1 to N+i do
               for  k=i+1 to N+K  do
                   fjk = fjk + mji ⋅  fik ;
          end;
        gdzie fij = aij  ,              i=1,2,...,N,        j=1,2,...,N;
                fij = bij  ,              i=1,2,...,N,        j=N+1,N+2,...,N+K;
               f(N+i)i = -1 ,          i=1,2,...,N; 
               f(N+i)j =  0 ,          i=1,2,...,N,        j=i+1,i+2,...,N+K;
        Wyniki: xij = f(N+i)(N+j) ,  i=1,2,...N,      j=1,2,...,K.
*/
    }

}

Bład jest dokładnie tu


m[j][i] = -f[j][i] / f[i][i];

Dodam ze musze zamienic to co jest w opisowce /**/z pascala na jave

Acha jaki był znacznik zeby kod javy wstawiac :p kojarzy mi sie code=java> ale nie dziala
1

m to obiekt klasy Macierz, nie tablica, a nie definiujesz w klasie Macierz operatora [][]. nie możesz odwoływać się spoza metod klasy do jej niepublicznych pól.
innymi słowy - nie istnieje coś takiego, jak new Macierz()[][]. istnieje new Macierz().tab[][], ale ma prywatny modyfikator dostępu.

0

A jak go mam zdefiniowac?? Moze łatwiej by bylo to wszystko w mainie zrobic ?? bez klas??
I jak mozesz to przypomnij mi znacznik do javy

1

przenieś obliczenia na polu tab do klasy, która służy do tych obliczeń i którą to sam napisałeś. tak się to robi.
jeśli chcesz iść na łatwiznę, to ustaw polu tab public zamiast private i działaj sobie na m.tab - ale jest to bardzo zła praktyka. klasy służą do tego, żeby szczelnie opakować dane, a tak będziesz mieć pół batonika w papierku, a pół z odciskami palców innych cienkich programistów.
<s>jak zdefiniować operator []? google się kłania - ot, choćby pierwszy link na http://www.google.pl/search?q=java+indexing+operator</s&gt;

0

Ok rozumiem. Zrobione dzieki ;)

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