|
|||||||
|
|
|
![]() |
|
|
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 17: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: 22:48.




















