Declaração em tempo de execução

10 respostas
allanalvaro

Olá pessoal, eu sou novo aqui no forum, como no Java também estou entrando no Java tem uns meses.
Dei uma pesquisada aqui no forum mas não encontrei nada sobre minha duuvida.

Estou fazendo um programa e surgiu uma duvida.

Eu posso declarar um array com tamanho definido pelo usário?
exemplo:

int NumeroNeuronios;
             NumeroNeuronios = Dados.nextInt();
	
             Object[] Neuronio;
	 Neuronio = new Object[NumeroNeuronios];

10 Respostas

rmendes08

Veja bem, em Java, você nunca declara o tamanho do array. Você especifica o tamanho do array na hora de instanciar o array, e isso são coisas diferentes. E nesse caso a resposta é sim, você pode usar um valor passado pelo usuário para especificar o tamanho de um array.

allanalvaro

Saquei, a duvida era mesmo se eu poderia declarar em run time ou nao.
Valeu pela ajuda.

rmendes08

Talvez você até consiga fazer o que você pretende, mas eu sugiro que você pesquise bem sobre essa diferença:

declarar x instanciar

é o tipo de conceito que te barra em entrevista de emprego.

pvrsouza
Tenta algo assim:
Scanner in = new Scanner(System.in);
int qtdPosicoes;

System.out.println("Digite o número de posições do Array:");
qtdPosicoes = in.nextInt();
String teste = new String[qtdPosicoes];
Marky.Vasconcelos

Voce poderia usar um List também´.

A implementação ArrayList é uma lista sequencial com um array interno. Mas com ele voce nao precisa se preocupar com o tamanho já que ele cresce conforme a necessidade.

allanalvaro

Pois eh, como eu to ainda iniciando em java (estou fazendo curso na caelum), nao queria sair pulando na frente.

Usar ArrayList pra mim seria bom.. pq eu queria fazer um Array de objetos com a quantidade de objetos que o usuario digitar. por exemplo: Tenho uma classe chamada Neuronio, nela eu tenho:
class Neuronio{
                       double X1, X2, W1, W2;
                       double Funcao;
                      
                       ......
                      metodos(); .....
}
Mas eu nao sei como ficaria para eu atribuir vallores nessas variaveis e chamar as funcoes... Nao sei se tem como fazer assim...
ArrayList<Neuronio> Neuro = new ArrayList<Neuronio>;
......
Neuro[0].X1 = 23.3;
Neuro[3].metodo();
E tambem por exemplo eu digamos que o usuario vai querer 30 neuronios, como eu faço pra adicionar esses 30 no array sendo que cada objeto eu tenho q declarar e instanciar para depois adicionar no arraylist... exemplo:
Neuronio s = new Neuronio;
Neuro.add(s);
Isso nao tem como, pq teria q fazer isso 30 vezes com variaveis diferentes.... Entao to perdido... =/
allanalvaro
pvrsouza:
Tenta algo assim:
Scanner in = new Scanner(System.in);
int qtdPosicoes;

System.out.println("Digite o número de posições do Array:");
qtdPosicoes = in.nextInt();
String teste = new String[qtdPosicoes];

Eu nao entendi bem pq usar String.

Poneis123
allanalvaro:
pvrsouza:
Tenta algo assim:
Scanner in = new Scanner(System.in);
int qtdPosicoes;

System.out.println("Digite o número de posições do Array:");
qtdPosicoes = in.nextInt();
String teste = new String[qtdPosicoes];

Eu nao entendi bem pq usar String.

Foi só o exemplo que ele deu pra criar um array, so q um array de Strings =)

Poneis123
allanalvaro:
Pois eh, como eu to ainda iniciando em java (estou fazendo curso na caelum), nao queria sair pulando na frente. Usar ArrayList pra mim seria bom.. pq eu queria fazer um Array de objetos com a quantidade de objetos que o usuario digitar. por exemplo: Tenho uma classe chamada Neuronio, nela eu tenho:
class Neuronio{
                       double X1, X2, W1, W2;
                       double Funcao;
                      
                       ......
                      metodos(); .....
}
Mas eu nao sei como ficaria para eu atribuir vallores nessas variaveis e chamar as funcoes... Nao sei se tem como fazer assim...
ArrayList<Neuronio> Neuro = new ArrayList<Neuronio>;
......
Neuro[0].X1 = 23.3;
Neuro[3].metodo();
E tambem por exemplo eu digamos que o usuario vai querer 30 neuronios, como eu faço pra adicionar esses 30 no array sendo que cada objeto eu tenho q declarar e instanciar para depois adicionar no arraylist... exemplo:
Neuronio s = new Neuronio;
Neuro.add(s);
Isso nao tem como, pq teria q fazer isso 30 vezes com variaveis diferentes.... Entao to perdido... =/

Alan,

Assim, se vc utilizar o ArrayList, vc não consegue acessar os itens da lista com o []. vc precisa utilizar o método get dessa lista, usando o get vc pode fazer isso que vc fez.

Se vc precisa de 30 neuronios, vc coloca dentro de um laço que instancia a classe neuronio e adiciona na lista.

Acho q um exemplo vale mais de 1000 palavras né:

public class Teste1
{
  public static void main(String[] args)
  {
        
        List neuro = new ArrayList();
        
        for(int i = 0; i<30; i++)
        {
          Neuronio neuronio = new Neuronio();
          neuro.add(neuronio); //vc poderia colocar direto neuro.add(new Neuronio())
        }
        
        Neuronio n = (Neuronio)neuro.get(0); //Esse (Neuronio) é o Cast
        n.X1 = 2;
        n.metodo();
        
        Neuronio n2 = (Neuronio)neuro.get(0);
        
        System.out.println(n2.X1); //Irá printar na tela o número 2.       
  }
}
allanalvaro

Muito boa essa dica. vou usar ela, consegui entender.
Brigadao a todos!!!

Criado 6 de abril de 2010
Ultima resposta 7 de abr. de 2010
Respostas 10
Participantes 5