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>

0

Ok rozumiem. Zrobione dzieki ;)

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