Organizando um array de 10 elementros por ordem crescente num outro array

4 respostas
ByIvo

É o seguinte, eu quero passar os elementos do array A pro array B, um a um, na ordem crescente. Fiz o código utilizando for, porém o resultado exibido é este:
A: [D@addbf1
B: [D@42e816

eu utilizei o Math.random(); para valorizar os 10 elementos do arra com número de 10 a 100, até essa parte ele funciona, porém ele exibe esses digitos que eu não entendi. Tentei uma Casting de int, mesmo assim não deu certo. e agora? Abaixo segue o código.
package arrays.exerciciosBásicos;

import javax.swing.JOptionPane;

public class Exec_01 {

public static void main(String[] args) {
    double A[] = new double[10];
    double B[] = new double[10];
    for (int i = 0; i < A.length; i++) {
        A[i] = (int) (Math.random() * 90) + 10;
        System.out.println(A[i]);
    }
    for (int i = 0; i < A.length; i++) {
        for (int c = 0; c < A.length; c++) {
            if (A[i] < A[c]) {
                B[i] = A[i];
            }
        }
    }
    JOptionPane.showMessageDialog(null, "A: " + A + "\nB: " + B);
    System.out.println("A: " + A + "\nB: " + B);

}

}

4 Respostas

JhowTroMundo

Voce não consegue imprimir os elementos do array simplesmente tentando ‘printar’ o array.

Voce tem que imprimir cada elemento do array por vez.

O que está sendo impresso é o método .toString do seu array (classe+@+numero hexadecimal).

Uma dica, cara: como é novo no forum, leia os posts fixos direcionados a voce.

Sempre coloque seu código dentro da tag CODE - [ code ] e [ / code ] (sem os espaços).

williamdasflores

Cara pelo que eu entendi o primeiro for vc deixa para fazer o calculo, aí vc faz um for para ordenar o array A

for(i = 0; i < A.length; i++)
{
	for(int j = 0; j < A.length -1; j++)
	{
		if(A[j] > A[j+1])
		{
			double aux = A[j];
			A[j] = A[j+1];
			A[j+1] = aux;
		}
				
	}
}

Depois vc faz um outro for para atribuir os valores do array A em B e ja mostrando os valores no array B

for(i = 0; i < B.length; i++)
{
	B[i] = A[i];
	JOptionPane.showMessageDialog(null, B[i]);
}

Certo?

L

Um método rápido de mostrar o conteúdo de um array é utilizar a classe java.util.Arrays.toString() ou .deepToString().

Por exemplo:

JOptionPane.showMessageDialog(null, "A: " + java.util.Arrays.toString(A) + "\nB: " + java.util.Arrays.toString(B)); System.out.println("A: " + java.util.Arrays.toString(A) + "\nB: " + java.util.Arrays.toString(B));

EduardoPinto

Se eu não me engano a o metodo Math.Random() vai ter retornar um número aleatório de 0 a 1, ou seja, 0.056106594 por exemplo.
Essa sua validação dificilmente será o suficiente [ (int) (Math.random() * 90) + 10; ] procure utilizar a classe Random, utilizando de seed procure ler sobre isso é uma maneira mais fácil (na minha opinião) de se trabalhar com números aleatórios em um intervalo bem definido.

No fim quando vc printa

[A e B, vc está printando o toString() dos mesmos, se vc quer printar os arrays utilize laços for each.]
Opa esse comentário acima não é válido para o seu caso que quer lançar uma imagem gráfica na tela.

Abraço

Criado 18 de maio de 2011
Ultima resposta 23 de mai. de 2011
Respostas 4
Participantes 5