Ajuda vetores

6 respostas
C

bom, o meu problema é o seguinte, preciso criar uma matriz em java que contenha dois métodos, um deve verificar quantos numeros impares possui cada coluna e o outro quantos números pares possui cada coluna.

aqui esta o main:
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
          Verificar a = new Verificar();
        int x[][] = new int[4][5];
        for (int l = 0; l <= 3; l++) {
            for (int c = 0; c <= 4; c++) {
                x[l][c] = Integer.parseInt(JOptionPane.showInputDialog("Digite os valores da matriz."));

            }
        }
        a.impar(x);
        a.par(x);
    }
}

e aqui esta o codigo que deveria verificar a quantidade:

public class Verificar {
public float impar(int[][] m) {
        int impar = 0;
        for (int coluna = 0; coluna < m[0].length; coluna++) {

            for (int linha = 0; linha < m.length; linha++) {
                int divisor = m[linha][coluna] % 2;
                if (divisor == 1) {
                    impar = impar + 1;
                } else {
                }
            }

            System.out.println("A quantidade de números impares na coluna " + coluna + " é: " + impar);
impar=0;
        }
        return impar;
    }

    public float par(int[][] m) {
        int par = 0;
        for (int coluna = 0; coluna < m[0].length; coluna++) {

            for (int linha = 0; linha < m.length; linha++) {
                int divisor = m[linha][coluna] % 2;
                if (divisor == 1) {
                    par = par + 1;
                } else {
                }
            }

            System.out.println("A quantidade de números pares na coluna" + coluna + " é: " + par);
par=0;
        }
        return par;
    }
}

o problema que eu percebi é que nao esta calculando certo e que esta mostrando varias vezes os valores (deveria aparecer somento o valor de numeros pares e impares.

6 Respostas

berg.pb

Primerio, não vejo pq vc ter 2 metodos. Ou o número é par ou é impar.
cria um método só q verifica…

segundo, não entendi pq nas duas divisões vc coloca a mesma condição…

tenta algo assim…

//inicio do codigo

  if (m[linha][coluna] % 2 ==0){
     par++;
  }else{
     impar++;
  }

//restante do código

abraços

The_Punisher

e ai cara blz, não conheço muito de vetores, mas pela lógica… percebi que vc está passando para os métodos os vetores de forma completa e não apenas os valores em que estão correndo…

esse trecho:

a.impar(x);  
a.par(x);

não seria algo assim:

a.impar(x[l][c]);  
a.par(x[l][c]);

não sei se está certo mas não custa nada tentar.

flw abrax

berg.pb

a forma como ele ta passando acho correta sim, pq, segundo o enunciado, é pra calcular quantos valores impares e pares existem na COLUNA.

uma outra abordagem, tb, como vc disse, seria fazer a verificação logo qdo o cara digitar.

C

berg.pb:
Primerio, não vejo pq vc ter 2 metodos. Ou o número é par ou é impar.
cria um método só q verifica…

segundo, não entendi pq nas duas divisões vc coloca a mesma condição…

tenta algo assim…

//inicio do codigo

  if (m[linha][coluna] % 2 ==0){
     par++;
  }else{
     impar++;
  }

//restante do código

abraços

eu fiz em 2 metodos pq esse é um exercicio de aula, e o professor quer que seja em dois metodos :X

nel

Boa tarde.

Sei bem como é quando um professor (na universidade tenho um assim) exige que determinada situação seja feita de tal forma. Mas vamos ao seu problema. Percebe que você retorna um int mas declara no seu método que o retorno é um float? Sobre estar mostrando várias vezes, seus System.out.println() está dentro do for, o que está correto. Ainda falando sobre o seu método, se você não vai usar os valores de retorno (como eu pude perceber no seu main) porque retornar algo e não usar void? :)

Mude isso e veja se funciona:

public void impar(int[][] m) {   
        int impar = 0;   
        for (int coluna = 0; coluna < m[0].length; coluna++) {   
            impar = 0;
            for (int linha = 0; linha < m.length; linha++) {   
               m[linha][coluna] % 2;   
                if (divisor != 0) {   
                    impar++; //é igual a impar = impar+1   
                }   
            }
           System.out.println("Quantidades Impares: "+impar+" da coluna: "+coluna); 
        }   
         
    }   
  
    public void par(int[][] m) {   
        int par = 0;   
        for (int coluna = 0; coluna < m[0].length; coluna++) {   
            par = 0;
            for (int linha = 0; linha < m.length; linha++) {                   
                if (m[linha][coluna] % 2 == 0) {   
                    par++;   
                }                   
            }
          System.out.println("Numeros pares: "+par+" da coluna: "+coluna);  
        }   
          
}

Apenas lembrando, um número somente será par se o resto de sua divisão por 2 for 0. Qualquer valor diferente disto é impar.

Abraços!

berg.pb

so alteraria retirando essa variavel divisor.

Criado 2 de dezembro de 2009
Ultima resposta 2 de dez. de 2009
Respostas 6
Participantes 4