Duvidas, Criação de metodos

22 respostas
dioni_deivid_dors

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

22 Respostas

minibixo

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

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());
  
  
  }
    
}
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 …

minibixo

Você esta passando um Int para uma metodo String, não vou conseguir te ajudar … você precisa de um pouco mais de conteudo … http://www.caelum.com.br/curso-java-orientacao-objetos/

dioni_deivid_dors

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;
           }
       }       
    }
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

for(int i=0;i<tamanhoMatrizLinha;i++){ for(int c=0;c<tamanhoMatrizColuna;c++){ matrizA[i][c]=numeroMatriz; } }

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
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:

void seuMetodo(int i, int j, int valor) {
matriz[i][j] = valor;
}

[code]
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
dioni_deivid_dors

esse :

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

vai na classe principal ?

S

dioni deivid dors:
esse :

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 ?

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

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…

minibixo

As apostilas da caelum é aberta …

Apostila da Caelum!
http://www.caelum.com.br/curso-java-orientacao-objetos/

S

Se a sua dúvida foi respondida coloque um [Resolvido] no titulo do tópico.

Criado 6 de junho de 2013
Ultima resposta 6 de jun. de 2013
Respostas 22
Participantes 3