Problemas com JTextField

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.

Obrigado.

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

Você poderia me dar um exemplo do uso desse split(" ")? Eu sou iniciante em java e ainda não sei usar muitos comandos… obrigado

http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&t=19849&highlight=split
http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&t=19821&highlight=split

Esse é o meu código… o que há de errado nele?

[code]import javax.swing.;
import java.awt.event.
;

public class Questao8GUI {

public static void main(String[] args) {
	int n;
	final JFrame janela = new JFrame("Produto Escalar");
	final JButton calcular = new JButton("CALCULAR");
	final JButton criavetores = new JButton("Criar Vetores");
	final JButton criarn = new JButton("n");
	final JTextField campon = new JTextField(5);
	final JTextField vetoru = new JTextField(15);
	final JTextField vetorv = new JTextField(15);
	final JTextField camporesposta = new JTextField(15);
	janela.setSize(300, 200);
	JPanel painel = new JPanel();
	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(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			campon.setText(JOptionPane.showInputDialog(null,
					"Entre com um valor para n:"));
		}
	});
	criavetores.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			int n = Integer.parseInt(campon.getText());
			for (int i = 0; i < n; i++) {
				vetoru.setText(vetoru.getText()
						+ " "
						+ JOptionPane.showInputDialog(null,
								"Entre com o elemento " + i
										+ " do vetor U."));
			}
			for (int i = 0; i < n; i++) {
				vetorv.setText(vetorv.getText()
						+ " "
						+ JOptionPane.showInputDialog(null,
								"Entre com o elemento " + i
										+ " do vetor V."));
			}
		}
	});

// O ERRO SURGE NESSE EVENTO
calcular.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String a, u[], v[], b;
int n, i;
double f, g = 0;
n = Integer.parseInt(campon.getText());
u = new String[n];
v = new String[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);
}
}[/code]

Alguém pode me ajudar nesse finalzinho de programa?
Obrigado…

Coloca o erro aí pra a gente ver!

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?

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.

Eu já inicializei as variáveis j,h,g e não deu certo… e eu uso eclipse sim.

Em qual linha você tá inicializando f, h e j, porque no código que tu colocou só to vendo inicializado o g

Eu incializei isso depois que vc me deu o toque… eu coloquei pra rodar mas não deu…

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.

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

Pow… to conseguindo resolver esse problema não… alguém me ajuda aí…

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:

a = vetoru.getText().replaceFirst(" ","");
b = vetorv.getText().replaceFirst(" ","");

Qualquer bronca, estamos aí!

Vlw kra vo testar aqui :smiley:

Valeu mermo véi… tá funcionando direitinho :smiley: Brigadão ae!!!
Abraços