Brincando com matrizes

Fala galera…
to tentando brinca com matrizes aki!

Na verdade estudando um pouco.

qd executo o cód ele retorna um erro e eu n consigo entender… :S


 package novopacote;  
   
 class Tabuleiro{  
     private int altura;  
     private  int largura;  
     private  int tabuleiro[][];  
     Tabuleiro(int altura,int largura){  
      setAltura(altura);  
      setLargura(largura);  
      startTabuleiro();  
      }  
     public void setAltura(int a){  
         altura=a;  
     }  
     public void setLargura(int a){  
         largura=a;  
     }  
     public int getAltura(){  
         return altura;  
     }  
     public int getLargura(){  
         return largura;  
     }  
     public void startTabuleiro(){  
         tabuleiro=new int[altura][largura];  
             for(int i=0;i< tabuleiro[i].length - 1;i++){  
                 for(int y=0;y< tabuleiro[y].length - 1;y++){  
                     tabuleiro[i][y]=0;  
                }  
        }  
     }   
       
     void Imprimir(){  
         for(int i=0;i< tabuleiro[i].length - 1;i++){  
                 for(int y=0;y< tabuleiro[y].length - 1;y++){  
                 System.out.printf(" %01d ",tabuleiro[i][y]);  
                 }  
           System.out.println();  
        }  
      System.out.println("================================================== ");  
     }  
     void Insere(int linha,int coluna,int valor){  
         tabuleiro[linha][coluna]=valor;  
     }  
 }  
   
 public class Matrizes {  
       
   public static void main(String a){  
       Tabuleiro tab = new Tabuleiro(8,8);  
       tab.Imprimir();  
       tab.Insere(2,2,69);  
       tab.Imprimir();  
 
   }  
       
 }   

o erro eh

java.lang.NoSuchMethodError: main
Exception in thread “main”
Process completed.

Dê uma olhada no seu método main na classe Matrizes: na assinatura dele você está passando como parâmetro uma variável do tipo String, e na verdade a assinatura do método main recebe um vetor de String, que são os argumentos que você pode passar na hora que chama o início do programa.

Então, deveria estar desse modo

public static void main(String[] args) {

}

valeu… ja resolvi aki…
agora tenho outro problema
la na função tabuleiro tenho a matriz tabuleiro do tipo private int.
mas queria acessar essa matriz direto do main.
como fazer?

Crie um método publico(setTabuleiro) na classe tabuleiro que modifique a matriz private.
Assim você estará modificando a matriz private através de outra classe.

eh justamente essa parte de criar um método novo q eu n sei como faezr…
vou colocar meu cód aqui…
se estiver disposto da uma luz!

package novopacote;  
import java.util.Scanner;

class Tabuleiro{  
    private int altura;  
    private int largura;  
    private int tabuleiro[][];  
    	
    Tabuleiro(int altura,int largura){  
     setAltura(altura);  
     setLargura(largura);  
     startTabuleiro();  
    }  
    public void setAltura(int a){  
        altura=a;  
    }  
    public void setLargura(int a){  
        largura=a;  
    }  
    public int getAltura(){  
        return altura;  
    }  
    public int getLargura(){  
        return largura;  
    }  
    public void startTabuleiro(){  
        tabuleiro=new int[altura][largura];  
        for(int i=0;i< tabuleiro[i].length - 1;i++){  
        	for(int y=0;y< tabuleiro[y].length - 1;y++){  
        	tabuleiro[i][y] = 0;  
        	}	  
       	}  
    }   
      
    void Imprimir(){  
        for(int i=0;i< tabuleiro[i].length - 1;i++){  
 	       for(int y=0;y< tabuleiro[y].length - 1;y++){  
    	    System.out.printf(" %01d ",tabuleiro[i][y]);  
        	}  
        System.out.println();  
       }  
     System.out.println("================================================== ");  
    }
      
    public void Insere(int linha,int coluna,int valor){  

		int pula = 0, linha_temp = 0, coluna_temp = 0;
		
		for(int li = 0; li <= 9; li++){
			if(li != linha){
				int number = 0;
				number = tabuleiro[li][coluna];
				if(valor == number){
					System.out.println("Esse número não pode ser inserido nesta linha");
					pula = 1;
				}
			}
		}

		if (pula != 1){
			for(int j = 0; j <= 9; j++ ){
				if(j != coluna){
					int number = 0;
					number = tabuleiro[linha][j];
					if(valor == number){
						System.out.println("Esse número não pode ser inserido nesta coluna");
						pula = 1;
					}
				}			
			}
		}
		
	    /*if (tabuleiro[(int) (((linha /3)*3 )+0)*9 ][(int) (((coluna /3)*3 )+0)]== valor ||
	       	tabuleiro[(int) (((linha /3)*3 )+1)*9 ][(int) (((coluna /3)*3 )+0)]== valor ||
    	    tabuleiro[(int) (((linha /3)*3 )+2)*9 ][(int) (((coluna /3)*3 )+0)]== valor ||
        	tabuleiro[(int) (((linha /3)*3 )+0)*9 ][(int) (((coluna /3)*3 )+1)]== valor ||
        	tabuleiro[(int) (((linha /3)*3 )+1)*9 ][(int) (((coluna /3)*3 )+1)]== valor ||
        	tabuleiro[(int) (((linha /3)*3 )+2)*9 ][(int) (((coluna /3)*3 )+1)]== valor ||
        	tabuleiro[(int) (((linha /3)*3 )+0)*9 ][(int) (((coluna /3)*3 )+2)]== valor ||
        	tabuleiro[(int) (((linha /3)*3 )+1)*9 ][(int) (((coluna /3)*3 )+2)]== valor ||
        	tabuleiro[(int) (((linha /3)*3 )+2)*9 ][(int) (((coluna /3)*3 )+2)]== valor  ){System.out.println("Esse número não pode ser inserido neste quadrante");
																		   pula = 1;}*/
     	if(pula == 0){
        	tabuleiro[linha][coluna] = valor;  
		}
    }  
}  

public class Matrizes {
	public static void main(String[] args){  
	  int lin = 0 , col = 0 , qtd_num = 0 , nro = 0;

      Tabuleiro tab = new Tabuleiro(10,10);  
      
      Scanner input = new Scanner( System.in );
     
      System.out.println("Qtd inicial de números do sudoku: ");
      qtd_num = input.nextInt();
      	
	  if( qtd_num < 1 || qtd_num > 81){
	     System.out.println("Numero	Inválido");
	     while(qtd_num <= 0	|| qtd_num > 9){
    	  System.out.println("Qtd inicial de números do sudoku: ");
	      qtd_num = input.nextInt();
	     }
	  }
      
      for(int i = 1; i <= qtd_num; i++){
      	System.out.println("A linha em que deseja inserir: ");
      	lin = input.nextInt();
      	System.out.println("A coluna em que deseja inserir: ");
      	col = input.nextInt();
    	System.out.println("Nº que deseja inserir: ");
	    nro = input.nextInt();

		tab.Insere(lin,col,nro);
	    System.out.println(" \n================================================== ");  
     	tab.Imprimir();

     }	      	
  }        

}   

Você tem na sua classes Tabuleiro o atributo private int tabuleiro[][], certo?
Essa matriz é privada e você só pode acessá-la nessa mesma classe. Para poder alterar esse atributo a partir de outras classes, como no método main da classe Matrizes por exemplo, você precisa criar um método acessor para ele, da mesma forma que fez com os aributos altura e largura.

public void setTabuleiro(int[][] tabuleiro){ this.tabuleiro = tabuleiro; }