package pratico;
import javax.swing.JOptionPane;
public class Pratico {
public static void main(String[] args) {
//queria criar um array dinamico
// que parace de pedir nomes quando o usuario colocase fim,
// até ai tudo ok, mas to tendo problemas na hora de ele passar
// para uma variavel auxiliar...
boolean fim=false;
int vet=0;
String auxi[]=new String[1];
String nomePessoa ="";
while(fim==false){
nomePessoa= JOptionPane.showInputDialog("informe um nome ou fim");
String vetNome[]=new String [vet++]; //aqui cria uma possição a mais no vetor
if(nomePessoa.equalsIgnoreCase("fim")){
fim=true;
for(int b=0;b<vetNome.length;b++){
System.out.println(vetNome[b]);
}
}else{
for(int i=0;i<vetNome.length;i++){
//problemas na hora de passar o nome, para ultima possição do vetor.
if(vetNome[i]==""|| vetNome[i]==null){
vetNome[i]= nomePessoa;
}
//criei um vetor com uma possição apenas, para servir de auxiliar.
auxi[0]=vetNome[i];
//tendo problemas na hora de troca de variaveis
// a variavel auxi[0] tem que passar de novo para o vetor vetNome.
}
}//else
}//while
}
}
Não entendi muito bem, você quer saber qual lógica utilizar para recuperar o valor que esta no seu auxiliar para que sempre que você criar o array vetNome[] novamente ele recuperar os valores antigos?
Se é essa a ideia, você pode até recuperar, mas somente o último valor, afinal de contas sua variável auxiliar só guarda um valor, o último e toda vez que você recria seu array ele é zerado!
Mas o que você está querendo fazer já existe e se chama List!
(Se vc já conhece o List e tem que fazer de qualquer forma com um array, ignore a explicação )
O List possui algumas implementações que você pode utilizar como o ArrayList ou LinkedList. O mais famoso é o ArrayList, mas tem outros e diferenças entre eles, aconselho uma pesquisa rápida sobre o assunto!
Com um List esse seu código iria diminuir várias linhas pois um List não possui tamanho, assim não precisa se preocupar com isso!
Exemplo (funcionando):
public static void main(String[] args) {
boolean fim = false;
String nomePessoa = "";
List<String> listaDeNomes = new ArrayList<String>();
while (fim == false) {
nomePessoa = JOptionPane.showInputDialog("informe um nome ou fim");
if (nomePessoa.equalsIgnoreCase("fim")) {
fim = true;
for (int b = 0; b < listaDeNomes.size(); b++) {
System.out.println(listaDeNomes.get(b));
}
} else {
listaDeNomes.add(nomePessoa);
}//else
}//while
}
Tem como otimizar mais este código, mas assim já supli sua necessidade!
Espero ter ajudado!
obrigado cara, mais eu quero fazer uma arryList na unha, uahUAHUahu
eu só quero que ele fique gravando no vetor os nomes até dado fim,
quando dado fim, ele mostra os nomes…
://, eh mt dificil fazer isso ai, ja peguei papel e caneta mtas vezes…
Você precisa de um método que aumente seu array quando ele chegar ao seu limite. Esse é o único ponto complicado do seu array.
Quando o array estiver cheio e o usuário ainda quiser preencher com mais nomes, você aumenta o array, ou aumenta de 1 em 1, ou usa qualquer outro critério que quiser.
A classe Arrays tem métodos utilitários que te ajudam a fazer isso, você pode usar eles ou fazer na mão mesmo.
int vet=0;
String vetNome[]=new String [vet++];
esses 2 comados aumenta o vetor toda vez que ele entra no loop,
meu problema está em gravar os nomes nele…
É justamente isso que eu quero dizer, você precisa criar um array maior e copiar todos os valores do antigo para o novo.
Faça uma função que encapsule isso, e seu problema fica simples.
Esqueça o usuário informando nomes por enquanto, pense somente nesse problema inicial, e depois a solução vai ser muito mais fácil.
Eu acho muito bom você ler a apostila fj14, lá tem uma implementação de redimensionamento de vetores… e mais sobre estrutura de dados, essa apostila me ajudou muito…
Depois eu li o livro Estrutura de Dados e Algoritmos em java do Robert Lafore, digo isso pois as vezes ficamos querendo resolver problemas e “impacamos”, pois não conhecemos as tecnicas básicas de estrutura de dados, lógico voce resolve esse problema, mas existe vários outros problemas relativamente simples, que podem ser resolvidos com um conhecimento melhor de “estrutura de dados”…
Fica a dica.