Sou novo em java criei um programa no NetBeans e não estou conseguindo carregar um vetor atravé da jtextfield, ele só carrega uma posição do vetor de 3 posição , basicamente eu queria que o usuario digitasse algo e após apertar a tecla enter o dado digitado fosse para o vetor e após apareceria a opção se o usuario gostaria de digitar mais alguma coisa se sim tudo se repetiria novamente e se não fosse impresso na tela o vetor com os dados digitados, O PROBLEMA É QUE DE UM VETOR DE POR EXEMPLO 4 POSIÇÕES só consigo preencher apenas 2 posição abaixo segue o codigo
if(evt.getKeyCode()== KeyEvent.VK_ENTER){ // aqui e pra chamar enter
int o;
vector[0] = (Integer.parseInt(caixa_1.getText()));
o = (JOptionPane.showConfirmDialog(null," Deseja Continuar ?","Atenção",JOptionPane.YES_NO_OPTION));
if( o == JOptionPane.YES_OPTION )
{
vector[1] = (Integer.parseInt(caixa_1.getText()));
}
else
if( o == JOptionPane.YES_OPTION ){
vector[2] = (Integer.parseInt(caixa_1.getText()));
}
else
if( o == JOptionPane.YES_OPTION ){
vector[3] = (Integer.parseInt(caixa_1.getText()));
}
else
mostrar();
}
Pessoal , descobri que são os meus ifs que estão logicamente incorretos para o que estou tentando fazer, porém, como eu poderia carregar um vetor de 3 ou mais índices atraves de uma jtextField ???
Seguinte jovem, não sei se é isso que vc precisa.
Coloque uma variável global que será seu ponteiro, indicando a próxima posição que o vetor recebe valor.
public class ClassVetorTeste {
public static void main(String[] args) {
int[] vector = new int[3]; // Isso deve ser global
int posicao = 0; // Isso tbm deve ser global
//coloque dentro do evento o conceito abaixo, lembrando q é só exemplo
int o = (JOptionPane.showConfirmDialog(null, " Deseja Continuar ?", "Atenção", JOptionPane.YES_NO_OPTION));
if (posicao < 3 && o == JOptionPane.YES_OPTION) { // verifica posicao menor que 3
for (int i = 0; i < 3; i++) {// só para preencher os 3 elementos, isso e desnecessario no seu caso
Random rw = new Random(); // só para ter valores diferentes, nos eu caso sera um textfield ao clicar em event Enter
vector[posicao] = rw.nextInt(); // adiciona o valor na posicao do vector, no meu caso um Nº aleatório
posicao++; // almenta posicao
}
}
JOptionPane.showMessageDialog(null, "lista de numeros digitados :" + "\n" + vector[0] + "\n" + vector[1] + "\n" + vector[2], "DADOS", JOptionPane.PLAIN_MESSAGE);
}
}
acho que meu problema é que eu estou querendo popular o vetor atraves de um único evento, veja
if(evt.getKeyCode()== KeyEvent.VK_ENTER){ // aqui e pra chamar enter
for{ ( int i = 0; i < 3; i++)
vector[i] = (Integer.parseInt(caixa_1.getText()));
}
}
se eu coloco isto no evento o que econtece é que quando eu digitar um numero na caixa de texto e der enter ele vai pegar aquele valor e popular os 3 indices do vetor com o mesmo valor digitado na caixa de texto
e se eu tentar carregar manualmente cada indice do vetor ele consegue carregar apena dois indices veja
int o;
vector[0] = (Integer.parseInt(caixa_1.getText())); // aqui ele carega normal no primeiro indice
o = (JOptionPane.showConfirmDialog(null," Deseja Continuar ?",“Atenção”,JOptionPane.YES_NO_OPTION));
if( o == JOptionPane.YES_OPTION )
{
vector[1] = (Integer.parseInt(caixa_1.getText())); // aqui também no segundo indice
}
else
o = (JOptionPane.showConfirmDialog(null," Deseja Continuar ?",“Atenção”,JOptionPane.YES_NO_OPTION));
if( o == JOptionPane.YES_OPTION )
vector[3] = (Integer.parseInt(caixa_1.getText())); // já aqui ele fica vazio visto que pelo if e else eu obrigo o sistema escolher uma ou outra posição pra carregar
else
mostrar();
tendeu meu problema, talves meu jeito de fazer isto seja complicado, ou talvéz exista outra maneira
pra isto
Vc leu os comentários q coloquei no código q montei? eu disse q o for n entraria no seu caso, eu usei como exemplo. Mas enfim, Faz o seguinte, cria a variável global de inteiro chamado posicao, e sempre q vc clicar em ENTER no textfield faça posicao++; e no caso de onde gravar… grve o valor no vetor[posicao].
Não tem segredo.