Arrays - dúvidas

Oi.
Estou começando a aprender agora sobre os Arrays. Tenho algumas dúvidas a esse respeito, e agradeço se alguma alma caridosa pudesse me ajudar :grin: :

Pergunta 1)
Não sei se eu estou fazendo algo de errado, mas quando eu faço o seguinte código, por exemplo,

class ImprimirArray
{
  public static void main (String []args)
  {
    double [] array = { 1, 2, 3 };
    
    System.out.println (array);
  }
}

Mas quando vai rodar o programa aparece um negócio esquisito, [D@676437 pra ser mais preciso. :confuso:
Um amigo disse que isso acontece por o Java devolve do jeito que tá armazenado na memória.
Não tem como fazer isso imprimir os valores dentro do array?
Imprimir algo do tipo:
1, 2, 3

Pergunta 2)
Outra dúvida: em todos os manuais que li, o algoritmo já vem formatado com o tamanho do array. Por exemplo, int c = new int [30] ; não existe uma genérica pra se usar o array ao invés de escrever o seu tamanho? Por exemplo, ao invés de usar que o array tem tamanho 30, não poderia chamar esse array com um valor genérico n , e depois o usuário decide o tamanho que ele precisa para o array? Seria mais ou menos como escrever int c = new int [n]
É que eu acho meio estranho a gente já definir o tamanho do array dentro do algoritmo. Parece-me meio inútil fazer isso… o algoritmo passaria a servir somente para aquele tamanho de array, mas se precisasse usar para um tamanho diferente, teríamos que criar um novo algoritmo usando esse novo tamanho… bom, eu posso estar errado :???:

Bom, é isso… e me desculpe pela mensagem gigantesca :lol: :lol:
Valeu :joia:

opa! blz?

respondendo as perguntas…

Pergunta 1 -
vc nao pode tentar imprimir o array inteiro chamando apenas o seu nome…
vc teria q fazer um looping e ir imprimindo item por item de seu array…

Pergunta 2 -
é perfeitamente possivel criar um array generico… meio q dinamico em tempo de execução vc indica o tamanho do array…

aki vaium exemplo q responde as 2 perguntas…
primeiro ele cria um array com o tamanho deficinido em tempo de execução e depois ele imprime todo o array… de forma correta…

class array
{
    public static void main(String args[])
    {
       int i;

       int n=3; // aki vc poderia fazer o programa pergar um numero q o usuário deseja

       int x[] = new int[n];

       for(i=0;i<n;i++)
       {
           x[i] = i;
       }

       
       for(i=0;i<n;i++)
       {
           System.out.println(x[i]);
       }
       
    }
}

flw!

qualquer dúvida, tamo ae!

[quote=“Candahar”]…

Pergunta 2)
Outra dúvida: em todos os manuais que li, o algoritmo já vem formatado com o tamanho do array. Por exemplo, int c = new int [30] ; não existe uma genérica pra se usar o array ao invés de escrever o seu tamanho? Por exemplo, ao invés de usar que o array tem tamanho 30, não poderia chamar esse array com um valor genérico n , e depois o usuário decide o tamanho que ele precisa para o array? Seria mais ou menos como escrever int c = new int [n]
É que eu acho meio estranho a gente já definir o tamanho do array dentro do algoritmo. Parece-me meio inútil fazer isso… o algoritmo passaria a servir somente para aquele tamanho de array, mas se precisasse usar para um tamanho diferente, teríamos que criar um novo algoritmo usando esse novo tamanho… bom, eu posso estar errado :???:

…[/quote]

Tem a classe LinkedList do pacote java.uitl que realmente trabalha com alocação dinâmica de memória. O nome da classe já fala tudo.

se a sun fosse fazer um vetor que vc pode usar tamanho variável dele sem reinicializa-lo, o tempo todo ia dar pau por vc talvez fazer o tamanho do vetor ser menos que numero de elementos dele

Valeu pelas respostas pessoal… vou estudar melhor isso pq tá meio difícil eu entender como isso funciona direito. :confuso: Principalmente os arrays bidimensionais… :hippy:

Hãã, uma perguntinha:
O meu avatar tá aparecendo aí na tela de vcs? Aqui não tá aparecendo… :confuso:

a foto com e sem flash?
ta aparecendo sim…

entao candahar, aki tbm naum ta aparecendo naum…

bem, copiei e colei a URL do teu avatar… vamos ver se aparece… tchan tchan tchan:

Ao contrario do que microfilo escreveu, a Sun tem sim uma classe Vector, que inicializa um vetor que vai crescentdo de acordo com a adicao de elementos nele. Da uma olhada na API que vc encontra seus metodos.

Seria mais ou menos assim
Vector vetor = new Vector();
vetor.add(new Integer(1));
vetor.add(new Integer(2));
vetor.add(new Integer(3));

System.out.println(vetor);

O unico porem eh que o Vector, assim como todos os outros derivados de List do java.util, nao armazena tipos primitivos voce teria que armazenar objetos da classe Integer, Double, etc.

Mas para a alegria de muitos, esse problema sera resolvido no Java1.5, com lancamento previso para o final do ano.

[quote=“PARQUE_MACABRO”]Ao contrario do que microfilo escreveu, a Sun tem sim uma classe Vector, que inicializa um vetor que vai crescentdo de acordo com a adicao de elementos nele. Da uma olhada na API que vc encontra seus metodos.

Seria mais ou menos assim
Vector vetor = new Vector();
vetor.add(new Integer(1));
vetor.add(new Integer(2));
vetor.add(new Integer(3));

System.out.println(vetor);

O unico porem eh que o Vector, assim como todos os outros derivados de List do java.util, nao armazena tipos primitivos voce teria que armazenar objetos da classe Integer, Double, etc.

Mas para a alegria de muitos, esse problema sera resolvido no Java1.5, com lancamento previso para o final do ano.[/quote]

ai meu deus!

isso é uma CLASSE!

no vetor “primitivo” para fazer isso vc tem que reinicializa-lo
tsc tsc
esas classe reinicializa o vetor, só que antes copia o vetor original para um vetor auxiliar, reinicializa o vetor original com um espaço maior e copia os elementos do auxiliar para o original…

agora, se vc reinicializa um vetor, vc perde os dados

ex:


...

//inicializo o vetor v

int[] v = new int[2]

//adiciono os valores

v[0] = 1;
v[1] = 2;

//reinicializo

v = new int[10]

//perdi akeles valores anteriores que eu adicionei!

entendeu? :wink:

[quote=“microfilo”]agora, se vc reinicializa um vetor, vc perde os dados
[/quote]

…não se tu for reinicializar esse vetor em um método q o receba como parametro. :slight_smile: