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…
privatestaticintMatriz[][]=newint[5][3];publicstaticvoidpegaValorAlimentaMatriz(intnumero){for(intlinha=0;linha<(exer01.Matriz.length);linha++){for(intcoluna=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!
dioni_deivid_dors
certo, mas como posso fazer para ele receber em cada possição da matriz um valor diferente, ?
minibixo
Você é um programador, você pode fazer qualquer coisa … quais valores você gostaria de colocar ?
dioni_deivid_dors
os valores que o usuario informase na classe principal, como posso fazer ?
minibixo
Deixe-me entender tudo bonitinho…
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! )
dioni_deivid_dors
usando uma classe main
importjavax.swing.JOptionPane;publicclassPrincipal{publicstaticvoidmain(String[]args){Stringaux;aux=JOptionPane.showInputDialog("informe o numero para a matriz");inttamanholinhda=Integer.parseInt(aux);aux=JOptionPane.showInputDialog("informe a quantidade de colunas");inttamanhocoluna=Integer.parseInt(aux);exer02.informarTamanhoMatriz(tamanholinhda,tamanhocoluna);aux=JOptionPane.showInputDialog("informe o numero para a matriz");intnumeromatriz=Integer.parseInt(aux);exer02.populaMatrizA(numeromatriz);System.err.println(""+exer02.exibeMatrizA());}}
minibixo
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
importjavax.swing.JOptionPane;publicclassPrincipal{publicstaticvoidmain(String[]args){Stringaux;aux=JOptionPane.showInputDialog("informe o numero para a matriz");inttamanholinhda=Integer.parseInt(aux);aux=JOptionPane.showInputDialog("informe a quantidade de colunas");inttamanhocoluna=Integer.parseInt(aux);exer02.informarTamanhoMatriz(tamanholinhda,tamanhocoluna);aux=JOptionPane.showInputDialog("informe o numero para a matriz");intnumeromatriz=Integer.parseInt(aux);exer02.populaMatrizA(numeromatriz);System.err.println(""+exer02.exibeMatrizA());}}//---------------------------------------------------------------------------------privatestaticinttamanhoMatrizLinha=0;privatestaticinttamanhoMatrizColuna=0;privatestaticintmatrizA[][]=newint[tamanhoMatrizLinha][tamanhoMatrizColuna];privatestaticintmatrizB[][]=newint[tamanhoMatrizLinha][tamanhoMatrizColuna];publicstaticvoidpopulaMatrizA(intnumeroMatriz){for(inti=0;i<tamanhoMatrizLinha;i++){for(intc=0;c<tamanhoMatrizColuna;c++){matrizA[i][c]=numeroMatriz;}}}publicstaticvoidpopulaMatrizA(intnumeroMatriz){for(inti=0;i<tamanhoMatrizLinha;i++){for(intc=0;c<tamanhoMatrizColuna;c++){matrizA[i][c]=numeroMatriz;}}}
minibixo
Você quer pegar o array que foi preenchido ?
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…
minibixo
O problema é na logica do seu método, voce só esta dando um valor para ele e inserindo em tudo, você não pode fazer um
Você teria que que inserir em cada posição de uma vez …
Foi você que escreveu esse código?
dioni_deivid_dors
sim fui eu, esse código seu, vai fazer a mesma coisa certo ? se for no metodo esse código ?
S
Sem_Nome
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...
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:
voidseuMetodo(inti,intj,intvalor){matriz[i][j]=valor;}[code]for(inti=0;i<(matriz.length);i++){for(intj=0;j<(j[i].length);j++){aux=JOptionPane.showInputDialog("Informe o valor para a matriz: ");intvalor=Integer.parseInt(aux);seuMetodo(linha,coluna,valor);}//coluna}//linha
dioni_deivid_dors
esse :
for(inti=0;i<(matriz.length);i++){for(intj=0;j<(j[i].length);j++){aux=JOptionPane.showInputDialog("Informe o valor para a matriz: ");intvalor=Integer.parseInt(aux);seuMetodo(linha,coluna,valor);}//coluna}//linha
vai na classe principal ?
S
Sem_Nome
dioni deivid dors:
esse :
for(inti=0;i<(matriz.length);i++){for(intj=0;j<(j[i].length);j++){aux=JOptionPane.showInputDialog("Informe o valor para a matriz: ");intvalor=Integer.parseInt(aux);seuMetodo(i,j,valor);}//coluna}//linha
vai na classe principal ?
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.
dioni_deivid_dors
certo, entendi, eu tenho a logica de programação sei fazer mt coisa, mas estou fazendo as coisas por metodos faz 1 semana, desde ja orbgidao ne D
minibixo
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 …)
S
Sem_Nome
minibixo:
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.
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 …
Bem provável mesmo. Ele deveria ler a apostila da Caelum (foi lá que eu aprendi).
dioni_deivid_dors
certo, mt amigos meu ja leram use a cabeça java, mas esse livro na biblioteca da minha univercidade ta sempre com alguem…
mas ta massa valeu…