Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: [java]codice

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    75

    [java]codice

    Cosa c'è di sbagliato in questo codice?
    Io devo prendere dei numeri da un TextFiel ed inserirli in un array.....è perchè la classe TextFiel ha per input solo caratteri e devo convertirli?come posso fare?

    Grazie


    import javabook.*;
    import java.awt.*;
    import java.awt.event.*;

    class a
    {
    public static void main()
    {

    TextField inputLine;
    inputLine = new TextField();

    int maxArray = 10;
    int numeri[] = new int[maxArray];


    for (int i = 0; i < maxArray; i++) {

    numeri[i] = inputLine.getText();

    sum += numeri[i]; }
    }
    }

  2. #2
    Il TextField restituisce String , quindi
    codice:
     numeri[i] = inputLine.getText();
    è sbagliato.
    Potresti fare una cosa del genere .

    codice:
    String testo=inputLine.getText();
    //Supponiamo che separi i numeri da uno spazio quando li scrivi
    StringTokenizer st=new StringTokenizer(testo," "); 
    int i=0;
    while(st.hasMoreTokens&& i<numeri.length){
         numeri[i]=Integer.parseInt(st.nextToken());
         sum+=numeri[i];
         i++;
    }
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    75
    io i numeri devo inserirli uno alla volta e man mano che li inserisco devono andare nell'array tramite un apposito pulsante...oltre che nell'array devono essere scritti in una TextArea..come posso fare????

    Sono a questo punto(fin qui credo sia ok...non mi da errori di compilazione):

    class a
    {
    public static void main()
    {

    TextField inputLine;
    inputLine = new TextField();

    int maxArray = 10;
    int numeri[] = new int[maxArray];


    for (int i = 0; i < maxArray; i++) {

    numeri[i]=Integer.parseInt(inputLine.getText()); }
    }
    }

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ehm... per visualizzare una TextField io creerei anche una finestra... non ti pare?
    Cominciamo con la visualizzazione dei componenti che ti servono:
    codice:
    import java.awt.*;
    import java.awt.event.*;
    
    public class Finestra extends Frame implements ActionListener {
    
       private TextField inputLine;
       private Button pulsante;
       private int indice;
       private int max_Array;
       private int [] numeri
    
       public Finestra() {
          max_Array = 10;
          numeri = new int[max_Array];
          indice = 0;
          setLayout( new BorderLayout() );
          inputLine = new TextField();
          pulsante = new Button("Inserisci");
          pulsante.addActionListener( this );
          add(inputLine, BorderLayout.NORTH);
          add(pulsante, BorderLayout.SOUTH);
          addWindowListener( new WindowAdapter() {
             public void windowClosing(WindowEvent we) { System.exit(0); }
          });
       }
    
       public void actionPerformed(ActionEvent ae) {
          if (indice < 10) {
             numeri[indice] = Integer.parseInt(inputLine.getText());
             indice++;
          } else {
             // Visualizzo un messaggio d'errore
          }
       }
    
       public static void main(String [] args) {
          Finestra f = new Finestra();
       }
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    75
    ok,grazie

    Ora devo collegare il codice con la claae che avevo creato e fare in modo che i valore inseriti vadano in una TextArea...come posso fare?

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Basta applicarsi un attimino...
    codice:
    import java.awt.*;
    import java.awt.event.*;
    
    public class Finestra extends Frame implements ActionListener {
    
       private TextField inputLine;
       private TextArea ta;
       private Button pulsante;
       private int indice;
       private int max_Array;
       private int [] numeri
    
       public Finestra() {
          max_Array = 10;
          numeri = new int[max_Array];
          indice = 0;
          setLayout( new BorderLayout() );
          inputLine = new TextField();
          pulsante = new Button("Inserisci");
          pulsante.addActionListener( this );
          ta = new TextArea()
          add(inputLine, BorderLayout.NORTH);
          add(pulsante, BorderLayout.SOUTH);
          add(ta, BorderLayout.CENTER);
          addWindowListener( new WindowAdapter() {
             public void windowClosing(WindowEvent we) { System.exit(0); }
          });
       }
    
       public void actionPerformed(ActionEvent ae) {
          if (indice < 10) {
             numeri[indice] = Integer.parseInt(inputLine.getText());
             ta.append("" + numeri[indice] + "\n");
             indice++;
          } else {
             // Visualizzo un messaggio d'errore
          }
       }
    
       public static void main(String [] args) {
          Finestra f = new Finestra();
       }
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    75
    ok grazie!!!!

    Ora però per fare delle operazioni tipo inserire dei numeri,etc..
    devo far apparire il frame con il TextField...devo farlo in un'altra classe?Vorrei creare più classi distinte sottoclassi della classe principale che avrà il metodo main...
    ...

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ti basta aggiungere qualche riga di codice...
    codice:
    import java.awt.*;
    import java.awt.event.*;
    
    public class Finestra extends Frame implements ActionListener {
    
       private TextField inputLine;
       private TextArea ta;
       private Button pulsante;
       private int indice;
       private int max_Array;
       private int [] numeri
    
       public Finestra() {
          max_Array = 10;
          numeri = new int[max_Array];
          indice = 0;
          setLayout( new BorderLayout() );
          inputLine = new TextField();
          pulsante = new Button("Inserisci");
          pulsante.addActionListener( this );
          ta = new TextArea()
          add(inputLine, BorderLayout.NORTH);
          add(pulsante, BorderLayout.SOUTH);
          add(ta, BorderLayout.CENTER);
          addWindowListener( new WindowAdapter() {
             public void windowClosing(WindowEvent we) { System.exit(0); }
          });
          setSize(300, 300);
          setVisible(true);
       }
    
       public void actionPerformed(ActionEvent ae) {
          if (indice < 10) {
             numeri[indice] = Integer.parseInt(inputLine.getText());
             ta.append("" + numeri[indice] + "\n");
             indice++;
          } else {
             // Visualizzo un messaggio d'errore
          }
       }
    
       public static void main(String [] args) {
          Finestra f = new Finestra();
       }
    }
    Il main c'è già... basta avviare la classe.

    Non ho capito il ragionamento: creare più classi per far cosa? Perchè sottoclassi della classe principale che avrà il main? (che tra l'altro non ha senso, in quanto ciascuna sottoclasse risulterebbe avere un main).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    75
    Mi spiego meglio...
    vorrei fare in modo che queste classi siano poi riusabili...quindi pensavo di non includere tutto il codice in un unica classe....

    Grazie per i consigli!!!

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ah, ho capito... e in che modo vorresti rendere queste classi riutilizzabili? Non vedo tanto la possibilità di creare codice riusabile in questo caso. O meglio, già di per se, essendo una classe, è riusabile: tu quella classe la puoi tranquillamente utilizzare all'interno di un altro programma; però non credo che si possa generalizzare quel codice... in fin dei conti quel codice ha senso di esistere solo in quella applicazione.
    Quello che mi viene in mente, così di primo acchitto, è di portare la TextField, la TextArea ed il pulsante in una classe a parte in modo da poterla utilizzare come una piccola "interfaccina" già pronta all'uso. Vediamo che ne esce:
    codice:
    public class Interfaccia extends Panel implements ActionListener {
       private TextField inputLine;
       private TextArea ta;
       private Button pulsante;
       private String lastValore;
       private Finestra f;
    
       public Interfaccia(Finestra f) {
          this.f = f;
          setLayout( new BorderLayout() );
          inputLine = new TextField();
          ta = new TextArea();
          pulsante = new Button("Inserisci");
          pulsante.addActionListener( this );
          add(inputLine, BorderLayout.NORTH);
          add(ta, BorderLayout.CENTER);
          add(pulsante, BorderLayout.SOUTH);
       }
    
       public String getLastValore() {
          return (lastValore != null) ? lastValore : "";
       }
    
       public void actionPerformed(ActionEvent ae) {
          ta.append( inputLine.getText() );
          lastValore = inputLine.getText();
          f.notificaInserimento();
       }
    }
    
    public class Finestra extends Frame {
    
       private Interfaccia interfaccia;
       private int [] numeri;
       private int indice;
    
       public Finestra() {
          setLayout( new BorderLayout() );
          numeri = new int[10];
          indice = 0;
          interfaccia = new Interfaccia(this);
          add(interfaccia, BorderLayout.CENTER);
          setVisible(true);
       }
    
       public void notificaInserimento() {
          String tmp;
          if (indice < 10) {
             tmp = interfaccia.getLastValore();
             if (!tmp.equals("")) {
                numeri[indice] = Integer.parseInt( tmp );
                indice++;
             }
          }
       }
    
       public static void main(String [] args) {
          Finestra f = new Finestra();
       }
    }
    Non è proprio il massimo, però già c'è una separazione fra oggetti.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.