bom dia, estou inciando orientação em objeto, e queria pro exemplo criar um metodo que popule uma matriz,
na classe principal eu chamo esse metodo e o usuario informa o valor para a matriz, mas essa logica que eu fiz
esse metodo vai preencher a matriz toda com um unico numero, como posso fazer ? coloco um JOptionPane.showInputDialog() ai dentro do metodo ? desde ja obrigado…
private static int Matriz [][]=new int [5][3];
public static void pegaValorAlimentaMatriz(int numero){
for(int linha=0;linha<(exer01.Matriz.length);linha++){
for(int coluna=0;coluna<(exer01.Matriz[linha].length);coluna++){
exer01.Matriz[linha][coluna]=numero; //popula a matriz
}//coluna
}//linha
}//metodo
Você só esta inserindo um valor para a matriz, no caso é o parâmetro que esse método recebe, evite fazer métodos estáticos (Sem duvidas é o mais chatinho de entender em OO) … na caelum existe uma excelente apostila sobre OO Java!
Você esta usando JFrame ou Console nessa aplicação ?
(Veja o livro da Caelum, lá tem tudo explicadinho desde a base … mesmo que você consiga resolver isso, voce não vai estar programando OO, estudo o Conceito e a Aplicação das coisas ante de sair codando, acho mais fácil você usar, se souber o porque é usado! )
import javax.swing.JOptionPane;
public class Principal {
public static void main(String[] args) {
String aux;
aux= JOptionPane.showInputDialog("informe o numero para a matriz");
int tamanholinhda =Integer.parseInt(aux);
aux= JOptionPane.showInputDialog("informe a quantidade de colunas");
int tamanhocoluna=Integer.parseInt(aux);
exer02.informarTamanhoMatriz(tamanholinhda, tamanhocoluna);
aux= JOptionPane.showInputDialog("informe o numero para a matriz");
int numeromatriz =Integer.parseInt(aux);
exer02.populaMatrizA(numeromatriz);
System.err.println(""+exer02.exibeMatrizA());
}
}
Toda aplicação java tem uma classe main, seja ela pelo terminal ou por GUI … no exemplo que você postou ai, nem foi chamado metodo que esta te confundindo …
ok, eu chamo o metado na classe principal, o metado está em baixo
import javax.swing.JOptionPane;
public class Principal {
public static void main(String[] args) {
String aux;
aux= JOptionPane.showInputDialog("informe o numero para a matriz");
int tamanholinhda =Integer.parseInt(aux);
aux= JOptionPane.showInputDialog("informe a quantidade de colunas");
int tamanhocoluna=Integer.parseInt(aux);
exer02.informarTamanhoMatriz(tamanholinhda, tamanhocoluna);
aux= JOptionPane.showInputDialog("informe o numero para a matriz");
int numeromatriz =Integer.parseInt(aux);
exer02.populaMatrizA(numeromatriz);
System.err.println(""+exer02.exibeMatrizA());
}
}
//---------------------------------------------------------------------------------
private static int tamanhoMatrizLinha=0;
private static int tamanhoMatrizColuna=0;
private static int matrizA[][]=new int [tamanhoMatrizLinha][tamanhoMatrizColuna];
private static int matrizB[][]=new int[tamanhoMatrizLinha][tamanhoMatrizColuna];
public static void populaMatrizA(int numeroMatriz){
for(int i=0;i<tamanhoMatrizLinha;i++){
for(int c=0;c<tamanhoMatrizColuna;c++){
matrizA[i][c]=numeroMatriz;
}
}
}
public static void populaMatrizA(int numeroMatriz){
for(int i=0;i<tamanhoMatrizLinha;i++){
for(int c=0;c<tamanhoMatrizColuna;c++){
matrizA[i][c]=numeroMatriz;
}
}
}
seguinte, eu tenho a classe principal que o usuario informa o tamanho da matriz, e chama o metodo, em seguida o usuario fala os valores que ele quer na matriz, e é passado por meio de matado, o que está acontecendo ai, no metodo populamatrizA é que ele ta guardando um unico valor para a matriz toda, como posso para ele guardar um valor diferente, ou seja tem que ser solicitado novamente um numero para ele, para colocar na segunda possição da matriz… entendeu ? (:
brigadão cara…
[quote=dioni deivid dors]seguinte, eu tenho a classe principal que o usuario informa o tamanho da matriz, e chama o metodo, em seguida o usuario fala os valores que ele quer na matriz, e é passado por meio de matado, o que está acontecendo ai, no metodo populamatrizA é que ele ta guardando um unico valor para a matriz toda, como posso para ele guardar um valor diferente, ou seja tem que ser solicitado novamente um numero para ele, para colocar na segunda possição da matriz… entendeu ? (:
brigadão cara…[/quote]
Ele está colocando o mesmo valor para todas as posições porque você passa um valor para o método e o método percorre toda a matriz e coloca o valor que você passou em cada uma das posições.
Uma das formas de fazer o que você quer seria algo como:
[code]
void seuMetodo(int i, int j, int valor) {
matriz[i][j] = valor;
}
for(int i=0;i<(matriz.length);i++){
for(int j=0;j<(j[i].length);j++){
aux = JOptionPane.showInputDialog("Informe o valor para a matriz: ");
int valor = Integer.parseInt(aux);
seuMetodo(linha, coluna, valor);
}//coluna
}//linha
for(int i=0;i<(matriz.length);i++){
for(int j=0;j<(j[i].length);j++){
aux = JOptionPane.showInputDialog("Informe o valor para a matriz: ");
int valor = Integer.parseInt(aux);
seuMetodo(linha, coluna, valor);
}//coluna
}//linha
for(int i=0;i<(matriz.length);i++){
for(int j=0;j<(j[i].length);j++){
aux = JOptionPane.showInputDialog("Informe o valor para a matriz: ");
int valor = Integer.parseInt(aux);
seuMetodo(i, j, valor);
}//coluna
}//linha
vai na classe principal ? [/quote]
Apesar de dar a resposta assim não ser legal…sim vai.
Tente entender a logica por traz disso.
Obs: Na chamada do metodo seuMetodo mude os valores de linha e coluna para i e j respectivamente.
Ele provavelmente escreveu o código sem entender muito bem como funciona, eu também tentei aprender assim, mas é muito mais difícil … O tempo que eu perdia empacando em probleminhas eu li o ‘Use a cabeça’ e ele abriu um pouco mais minha cabeça … Recomendo fortemente tanto ele quando as apostilas que eu citei agora a pouco …
(100 paginas você pode ler em algumas horas e sem duvidas vai te ajudar bastante …)
[quote=minibixo][quote=Sem_Nome]
Ele está colocando o mesmo valor para todas as posições porque você passa um valor para o método e o método percorre toda a matriz e coloca o valor que você passou em cada uma das posições.
[/quote]
Ele provavelmente escreveu o código sem entender muito bem como funciona, eu também tentei aprender assim, mas é muito mais difícil … O tempo que eu perdia empacando em probleminhas eu li o ‘Use a cabeça’ e ele abriu um pouco mais minha cabeça … Recomendo fortemente tanto ele quando as apostilas que eu citei agora a pouco …[/quote]
Bem provável mesmo. Ele deveria ler a apostila da Caelum (foi lá que eu aprendi).