Olá. Se eu tiver, por exmplo, dois TextField com alguns valores inteiros separados por um espaço " " por exemplo: [1.0 2.0 3.0] e [4.0 5.0 6.0] e eu quiser transformar isso em valores reais e relacionar o valor de um com o de outro como se fossem 2 vetores exemplo: u[] = [1.0 2.0 3.0] e v[] = [4.0 5.0 6.0].
Resumo: Como eu faço para transformar um TextField em um vetor.
Se não houver problemas de esses valores serem inseridos de uma forma incorreta, tu pode fazer um split(" “) no getText() do JTextField. Isso vai devolver um array de String usando o espaço (” ") como delimitador. Ai tu transforma esse Array de String em um Array de double.
Qualquer outra duvida, estamos ai!
Valeu
C
COLATINOPJ
Você poderia me dar um exemplo do uso desse split(" ")? Eu sou iniciante em java e ainda não sei usar muitos comandos… obrigado
importjavax.swing.*;importjava.awt.event.*;publicclassQuestao8GUI{publicstaticvoidmain(String[]args){intn;finalJFramejanela=newJFrame("Produto Escalar");finalJButtoncalcular=newJButton("CALCULAR");finalJButtoncriavetores=newJButton("Criar Vetores");finalJButtoncriarn=newJButton("n");finalJTextFieldcampon=newJTextField(5);finalJTextFieldvetoru=newJTextField(15);finalJTextFieldvetorv=newJTextField(15);finalJTextFieldcamporesposta=newJTextField(15);janela.setSize(300,200);JPanelpainel=newJPanel();painel.add(calcular);painel.add(criavetores);painel.add(criarn);painel.add(vetoru);painel.add(vetorv);painel.add(camporesposta);painel.add(campon);janela.getContentPane().add(painel);criarn.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){campon.setText(JOptionPane.showInputDialog(null,"Entre com um valor para n:"));}});criavetores.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){intn=Integer.parseInt(campon.getText());for(inti=0;i<n;i++){vetoru.setText(vetoru.getText()+" "+JOptionPane.showInputDialog(null,"Entre com o elemento "+i+" do vetor U."));}for(inti=0;i<n;i++){vetorv.setText(vetorv.getText()+" "+JOptionPane.showInputDialog(null,"Entre com o elemento "+i+" do vetor V."));}}});// O ERRO SURGE NESSE EVENTOcalcular.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){Stringa,u[],v[],b;intn,i;doublef,g=0;n=Integer.parseInt(campon.getText());u=newString[n];v=newString[n];a=vetoru.getText();u=a.split(" ");b=vetorv.getText();v=b.split(" ");for(i=0;i<n;i++){f=Double.parseDouble(u[i])*Double.parseDouble(v[i]);g=g+f;}camporesposta.setText("A resposta é: "+g);}});janela.setVisible(true);}}
C
COLATINOPJ
Alguém pode me ajudar nesse finalzinho de programa?
Obrigado…
R
RomulinhoPJ
Coloca o erro aí pra a gente ver!
C
COLATINOPJ
Quando eu clico no botão desse evento:
calcular.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String a, b, u[], v[];
int n, i;
double f, g = 0, h, j;
n = Integer.parseInt(campon.getText());
u = new String[n];
v = new String[n];
a = vetoru.getText();
u = (a.split(" "));
for (i = 0; i < n; i++) {
h = Double.parseDouble(u[i]);
j = Double.parseDouble(v[i]);
f = h * j;
g = g + f;
}
camporesposta.setText("" + g);
}
});
…o programa deveria preencher um JTextField com o resultado do produto vetorial, mas ele continua em branco e ainda dá o seguinte erro: EventDispatchThread.run() line: not avaliable [local variables unavaliable].
O que será isso?
R
RomulinhoPJ
Tenta inicializar as variáveis f, h e j, porque tu tá usando dentro de um laço, aí tem que inicializar antes.
ps: Se tu não tiver usando o eclipse, experimenta usar… ajuda muito pra achar errinhos difíceis de se encontrar.
C
COLATINOPJ
Eu já inicializei as variáveis j,h,g e não deu certo… e eu uso eclipse sim.
R
RomulinhoPJ
Em qual linha você tá inicializando f, h e j, porque no código que tu colocou só to vendo inicializado o g
C
COLATINOPJ
Eu incializei isso depois que vc me deu o toque… eu coloquei pra rodar mas não deu…
R
RomulinhoPJ
Não sei se vc jah modificou, mas no código o vetor v foi inicializado mas os índices não receberam valores.
O método split() já retorna um vetor, então tu não precisa inicializar o vetor antes não.
C
COLATINOPJ
como assim os índices não receberam valores? O split retorna um vetor de string certo? Aí se eu quiser multiplicar os valores desse vetor eu posso fazer assim:
String a, b, u[], v[];
int n, i;
double f, g = 0;
n = Integer.parseInt(campon.getText());
a = vetoru.getText();
u = a.split(" ");
b = vetorv.getText();
v = b.split(" ");
for (i = 0; i < n; i++) {
f = Double.parseDouble(u[i])*Double.parseDouble(v[i]);
que dá certo? Ao menos o eclipse não tá mostrando erro nenhum… Teste e não deu certo… apareceu o erro passado aqui EventDispatchThread no debug
C
COLATINOPJ
Pow… to conseguindo resolver esse problema não… alguém me ajuda aí…
R
RomulinhoPJ
Descobri!!! É o seguinte: o array devolvido pelo split() tinha a primeira posição em branco, aí dava erro na hora do parseDouble(). Então é só tu fazer isso: