JSP - vetor em uma classe

3 respostas
rijava

Boa tarde galera, blz? estou começando a parte de orientaçao a objetos em jsp e gostaria de ajuda de voces.
eu criei uma pagina dinamica onde o usuario entra com um valor(5) em um campo de texto e o programa cria 5 'inputs' para o usuario digitar.

depois de tudo isso, eu ja criei minha classe com chamada Pessoa e com um atributo nome.
porem, eu gostaria que esse nome se transformasse em um vetor para poder usa-lo.

public class Classe {
    public int tamanho = 2;
    String nome[] = new String[tamanho];
}
Classe p = new Classe();

       p.nome[0] ="Carlos";
       p.nome[1] ="Mariana";
       

       System.out.println("nome 1: "+p.nome[0]);
       System.out.println("nome 2: "+p.nome[1]);

até aqui tudo bem, entretanto eu nao sei quantos nomes o usuario vai digitar e eu nao posso declarar meu vetor com um tamanho x.
gostaria de declarar com uma variavel que vai receber a quantidade de nomes .. exemplo:

public class Classe {
    public int tamanho; // aqui tamanho valeria 3.
    String nome[] = new String[tamanho]; // logo meu vetor nome teria um tamanho de 3.
}
Classe p = new Classe();
       int quantidadeNomes = Integer.parseInt(request.getParameter("totalNomes"));
       //suponha quantidadeNomes seja = 3.
       
       int i;
       p.tamanho = quantidadeNomes; // tamanho recebe 3.
       
       for(i=0; i<quantidadeNomes; i++)
           p.nome[i] = request.getParameter("nome"+i);

resumindo o codigo acima, eu passei um valor x que eu nao sei para a minha variavel tamanho.
e depois criei um vetor nome com tamanho [x].

soh que nao está dando certo.. meu vetor nao reconhece a variavel sendo um inteiro.
se eu declarasse:

int x = 5;
String nome[] = new String [x];
meu vetor teria um tamanho de 5.

mas como eu nao sei quantos campos o usuario gostaria de cadastrar..
eu tentei pegar o valor da quantidade de vezes que ele criou os campos e passei como valor para tamanho.

qtdNomes = 25;
p.tamanho = qtdNomes;

int tamanho;
String nome[] = new String[tamanho];

O que está acontecendo que não dá certo?
desculpem a ignorancia, mas estou iniciando e ja procurei ajuda mas nao consegui.
Obrigado a todos que leram.

3 Respostas

Jeferson_Manetti

olá…
bem o vetor ou melhor dizendo Array…
não podem ser redimensionados dinamicamente…
uma solução para esse situação e vc utilizar um construtor que receberia o tamanho do array.
la vai:

public class  Classe {  

      String[] nome;

      public Classe(int tamanho){
           nome = new String[tamanho];
      }

    }
int quantidadeNomes = Integer.parseInt(request.getParameter("totalNomes"));  
     Classe p = new Classe(quantidadeNomes );  

     int i; 
          
      for(i=0; i<quantidadeNomes; i++)  
            p.nome[i] = request.getParameter("nome"+i);

isso e uma solução…

porem se vc precisa de algo dinamico aconseho a usar Mapas e Listas…
procura por collection no google…
a mais conhecida e a ArrayList… e como se fosse um vetor so q dinanico…

vc usa assim:

ArrayList lista = new arrayList();
lista.add("nome1");
lista.add("nome2");

// e ai vai... vc vai adicionando qnts item vc quiser...
// e o mais legal e q vc pode colocar tipagem com java 5...

ArrayList<String> nomes = new ArrayList<String>();
nomes.add("Jose");
nomes.add("Manoel");

nomes.add(10); // erro... so aceita String...

mais e isso ai… Java e muito mais do que isso…
mais espero ter ajudado…

flw t+

rijava

fala Jeferson Manetti,
Deu certo, entendi perfeitamente o que voce disse.
consegui o que eu esperava.
Obrigado cara pela ajuda.

rijava

Fala Jeferson Manetti,
Deu certo cara, era isso mesmo que eu esperava.
entendi perfeitamente sua soluçao.
Obrigado.

Como eu marco o topico como resolvido ???

valeu galera!

Criado 16 de abril de 2010
Ultima resposta 16 de abr. de 2010
Respostas 3
Participantes 2