Gostaria de uma ajuda com meu sistema. Consigo realizar cadastro normal no vetor mas queria que assim que quisesse cadastrasse novamente ele não contasse o vetor do inicio e sim perguntasse qual espaço do vetor desejo salvar. Segue código de cadastro abaixo:
intposicao=Integer.parseInt(JOptionPane.showInputDialog("Qual espaço do vetor desejo salvar?: "));nome[posicao]=JOptionPane.showInputDialog("Nome: ");endereco[posicao]=JOptionPane.showInputDialog(null,"Endereço: ");email[posicao]=JOptionPane.showInputDialog(null,"Email: ");
Ao invés de ter um array de objetos do tipo String para os nomes, um array de objetos do tipo String para os endereços e um array de objetos do tipo String para os emails, não seria melhor você ter apenas um array de objetos do tipo Cadastro?
L
Luan_Saboia
Ajudou muito essa ideia, o Array pensei em fazer como disse mas no trabalho passado pela instituição que faço parte o professor não permite ser implementado dessa forma. Salvando no vetor dessa forma eu poderia adicionar algo assim?
if(posicao==nome[posicao]){JOptionPane.showMessageDialog("Espaço já preenchido: ");}
Para poder dar condição de erro em caso de tentar sobrescrever ou adicionar em um cadastro que já exista.
staroski2 likes
Dessa forma você está comparando se um int é igual à um objeto String, isso não funciona.
Você pode fazer assim:
if(nome[posicao]!=null){JOptionPane.showMessageDialog("Espaço já preenchido: ");}
L
Luan_Saboia
Então ficaria assim:
if(nome[posicao]!=null){JOptionPane.showMessageDialog("Espaço já preenchido: ");}else{intposicao=Integer.parseInt(JOptionPane.showInputDialog("Qual espaço do vetor desejo salvar?: "));nome[posicao]=JOptionPane.showInputDialog("Nome: ");endereco[posicao]=JOptionPane.showInputDialog(null,"Endereço: ");email[posicao]=JOptionPane.showInputDialog(null,"Email: ");}
Assim eu consigo cadastrar digamos um valor na posicao 1 e quando for cadastrar de novo se eu colocar na posicao 1 ele exibe que ela já está preenchida? Porque estou tentando fazer algo assim dar certo.
staroski2 likes
Não, na verdade ficaria assim:
intposicao=Integer.parseInt(JOptionPane.showInputDialog("Qual espaço do vetor desejo salvar?: "));if(nome[posicao]!=null){JOptionPane.showMessageDialog("Espaço já preenchido: ");}else{nome[posicao]=JOptionPane.showInputDialog("Nome: ");endereco[posicao]=JOptionPane.showInputDialog(null,"Endereço: ");email[posicao]=JOptionPane.showInputDialog(null,"Email: ");}
L
Luan_Saboia
No geral mesmo do sistema está assim:
for(i=1;i<=opc_menu;i++){posicao=Integer.parseInt(JOptionPane.showInputDialog("Qual espaço do vetor desejo salvar?: "));if(nome[posicao]==null){nome[posicao]=JOptionPane.showInputDialog("Nome: ");}elseif(nome[posicao]!=null){JOptionPane.showMessageDialog(null,"Espaço já preenchido: ");}}
Queria teu auxílio de novo para fazer o posicao começar a partir do valor 1 pois quando salvo algum dado ele começa do 0 então se eu salvar na posição 2 assim dizendo eu só posso acessar se digitar o número 3. Tem como fazer isso?
staroski2 likes
Arrays são indexados a partir de 0.
Se você quer:
digitar 1 para a cessar a posição 0;
digitar 2 para a cessar a posição 1;
digitar 3 para a cessar a posição 2;
É só subtrair 1 da posição informada.
L
Luan_Saboia
Entendo, mas se eu quisesse deixar a posição [0] com algum valor tipo null talvez eu conseguiria fazer ele iniciar da posição 1?
staroski
Arrays tem tamanho estático, definido na hora da instanciação.
Eles são indexados em 0.
Porque você quer deixar a primeira posição null?
O que exatamente você quer fazer?
L
Luan_Saboia
De alguma forma está dando para salvar no campo 1 e visualizar digitando 1, dessa forma:
intn=100;intposicao=n;Stringnome[]=newString[n];for(i=1;i<=opc_menu;i++){posicao=Integer.parseInt(JOptionPane.showInputDialog("Qual espaço do vetor desejo salvar?: "));if(nome[posicao]==null){nome[posicao]=JOptionPane.showInputDialog("Nome: ");}elseif(nome[posicao]!=null){JOptionPane.showMessageDialog(null,"Espaço já preenchido: ");}}
O que queria é fazer o que me auxiliou, só que é um trabalho escolar e queria fazer com que salvasse no campo 1 e fosse possível visualizar nele mesmo para não ter um “problema” de entendimento do sistema. Mas deu certo assim, muito obrigado pela ajuda.
staroski
Dessa forma você tem um problema de desperdício de memória, pois você está sempre ignorando a primeira posição do array.
Para não ter problemas de entendimento, é só usar nomes de variáveis legíveis:
Stringnomes[]=newString[100];for(i=1;i<=opc_menu;i++){intposicaoDigitada=Integer.parseInt(JOptionPane.showInputDialog("Qual espaço do vetor desejo salvar?: "));intposicaoReal=posicaoDigitada-1;if(nomes[posicaoReal]==null){nomes[posicaoReal]=JOptionPane.showInputDialog("Nome: ");}else{JOptionPane.showMessageDialog(null,"Espaço já preenchido: ");}}