Ajuda com programa java

3 respostas
C

bom, primeiro gostaria de dizer um oi para todos, pois sou novo neste forum, o meu problema é o seguinte:
Preciso criar uma matriz, de 2x3, e fazer com que o usuario digite os numeros e depois mostre quantos numeros pares e impares tem, eu fiz o seguinte código:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication4;

import javax.swing.JOptionPane;

/**
 *
 * @author usuario
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        {
           
            int par = 0;
            int impar = 0;
            int valores[][] = new int[2][2];
            for (int linha = 0; linha <= 1; linha++) {
                for (int coluna = 0; coluna <= 2; coluna++) {
                    valores[linha][coluna] = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor [" + linha + "] [" + coluna + "] :"));
                }
            }
            for (int i = 0; i < valores.length; i++) {

                
                if (valores[i][i] % 2 == 0) {
                    par = par + 1;
                } else {
                    impar = impar + 1;
                }
            }
            System.out.println("a quantidade de numeros pares é:" + par);
            System.out.println("a quantidade de numeros impares é:" + impar);

        }
    }
}
e quando executo, ele mostra a seguinte mensagem:
run:
O valor na posição0é:[I@167d940
O valor na posição1é:[I@e83912
a quantidade de numeros pares é:0
a quantidade de numeros impares é:2
CONSTRUÍDO COM SUCESSO (tempo total: 7 segundos)

Alguem poderia me ajudar e mostrar o que estou fazendo de errado?
estou usando o netbeans

3 Respostas

criador

Este [b][I@167d940[/b] é o endereço de memória.
Você precisa imprimir uma posição do array e não o objeto.

Provavelmente você esta fazendo o seguinte:

int[] valor = new int[2];

valor[0] = 1;
valor[1] = 2;

System.out.println(valor);

Onde deveria ser mostrado:

for (int i=0; i< valor.length; i++) {
System.out.println(valor[i]);
}

Agora, para percorrer a sua matriz, você deverá fazer 2 for.

for (int i = 0; i < valores.length; i++) {

	for (int c = 0; c < valores[i].length; c++) {           
                
		if (valores[i][c] % 2 == 0) {   
			par = par + 1;   
                } else {   
			impar = impar + 1;   
                }   
            }
	}

Desta forma, você percorrerá as linhas e colunas de sua matriz.

Obs.: Não testei este outro for. Pode haver erros.

Abraço!

Tiberio

Alem disso dito em cima, voce disse que sua matriz precisa ser 2 x 3
E declarou a mesma [2][2] ??
Isso faz com que voce percorra posiçoes nao iniciadas no seu for, causando problemas de lixo em variaveis…

Abraços

C

Tiberio:
Alem disso dito em cima, voce disse que sua matriz precisa ser 2 x 3
E declarou a mesma [2][2] ??
Isso faz com que voce percorra posiçoes nao iniciadas no seu for, causando problemas de lixo em variaveis…

Abraços

usei 2x2 para ficar mais facil de testar.

Assim que chegar em casa irei testar com esses 2 “fors”

Criado 13 de outubro de 2009
Ultima resposta 13 de out. de 2009
Respostas 3
Participantes 3