|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Feb 2013
Messaggi: 5
|
[JAVA]Prendere array da textfield
Avrei bisogno di un aiuto...devo creare un applet che prende una serie di valori separati da virgola da una textfield e li carica in un array e successivamente lo stampa nella seconda texfield...il mio problema è il caricamento dei valori nell'array. Qualcuno può aiutarmi a risolvere il problema? grazie in anticipo
![]() Vi allego il codice: Codice:
import java.awt.*; import java.awt.event.*; import java.applet.*; import java.io.*; import javax.swing.JOptionPane; import java.util.*; public class arraytextfield extends Applet implements ActionListener { TextField testo1 = new TextField(30); TextField testo2 = new TextField(30); Button carica = new Button("Carica"); Button visual = new Button("Visualizza"); int num = Integer.parseInt ( JOptionPane.showInputDialog ("Inserisci grandezza Array:")); int vettore[] = new int[num]; public void init() { carica.addActionListener(this); visual.addActionListener(this); this.add(carica); this.add(visual); this.add(testo1); this.add(testo2); } public void actionPerformed(ActionEvent e) { if(e.getSource() == carica) { vettore = Integer.valueOf(testo1.getText()); } if(e.getSource() == visual) { } } |
![]() |
![]() |
![]() |
#2 | ||
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Per prima cosa, devi mettere le mani sulla stringa contenuta nel TextField, cosa che hai già fatto con:
Codice:
testo1.getText() Metti però che l'utente digita in fretta, magari inserisce stringhe del tipo: Quote:
Potresti anche decidere che l'applicazione le deve accettare tutte, e gli array risultanti devono essere: Quote:
Per ottenere questo risultato possiamo usare una regular expression (in grassetto): Codice:
String[] tokenize(String input) { if (/*input == null ||*/ input.isEmpty) return new String[]{}; else return input.split("[^0-9\\-]+"); } Se l'input utente è valido ogni String nell'array restituito da tokenize dovrebbe essere un intero. Per fare il parsing di tutti gli interi basta passare ogni String come argomento al metodo Integer.parseInt() e quindi memorizzare l'intero restituito (consiglio in una List<Integer>). Se l'input utente non è valido (ad esempio l'utonto digita "1, 2, q, 4") Integer.parseInt sputa una NumberFormatException (quando ad esempio gli viene passata come input la "q"), il che è utile per far fare qualcosa di appropriato all'applicazione (tipo farle stampare un messaggio "Dai cazzo!" e far ripetere all'utente l'inseirmento, oppure collegarlo a http://www.youtube.com/watch?v=b8Fad9yJN_o) Se metti insieme i vari pezzi dovresti riuscire a montare una soluzione ![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 21-03-2013 alle 16:33. |
||
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Sep 2007
Città: Albiolo (CO)
Messaggi: 165
|
In modo molto grezzo (senza controlli sull'inserimento ne niente).
Codice:
public void actionPerformed(ActionEvent e) { if(e.getSource() == carica) { String[] stringValues = testo1.getText().split(",").trim(); for (int i = 0; i < num; i++) { vettore[i] = Integer.parseInt(stringValues[i]); } } if(e.getSource() == visual) { String outputString = ""; for (int i = 0; i < num; i++) { if (i == 0) outputString = String.valueOf(vettore[i]); else outputString = outputString + ", " + String.valueOf(vettore[i]); } testo2.setText(outputString); } } ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:01.