Boster
Fevereiro 28, 2009, 6:54pm
#1
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) {
}
Boster
Fevereiro 28, 2009, 7:59pm
#3
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.
Boster
Fevereiro 28, 2009, 9:45pm
#5
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;
}