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
:
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? 
[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. 