[JAVA]un metodo puo fare ritornare piu di una stringa?

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
misterxxitalia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: domenica 11 marzo 2007, 22:15

[JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da misterxxitalia »

ciao a tutti questo è il mio metodo:

Codice: Seleziona tutto

public String Leggi()throws JDOMException, IOException, 
           NullPointerException, IllegalArgumentException{
   
        Document permessi = null;

SAXBuilder builderrubrica = new SAXBuilder();// Costruzione di un documeto SAX per rubrica
permessi = builderrubrica.build(new File("permessi.xml"));// Lettura del file XML rubrica
Element parametri = permessi.getRootElement();// Posizionamento sulla root (rubrica)
 String minrimasti=((""+parametri.getChild("minrimasti").getTextTrim()));
  String dataodierna=((""+parametri.getChild("data").getTextTrim()));     
 return minrimasti; //dataodierna ;????
    }  
come vedete ho 2 stringhe da fare ritornare...in un unico metodo è possibile?questo metodo serve per la lettura di un file xml (ho anche il metodo x la scrittura)e siccome sono dei metodi che devo invocare molto spesso è possibile chiamarli in modo temporalizzato?ovvero fare ogni due minuti lettura e scrittura?questo è come li invoco:

Codice: Seleziona tutto

public class Main {

    public static void main(String[] args) {
  parametri a = new parametri();
 
  do{
 
    try{
     a.scrivi(a.documpermessi());
    } 
    catch (IOException ex)
   {
     System.err.println(ex);
   }
   catch (JDOMException ex)
   {
}  
 
    if (a.CoutDown().equals(a.OraCorrente()))a.Beep();
     
  }
while (a.CoutDown().equals(a.OraCorrente()));
chiamando con un do questi metodi di continuo nn mi pare il caso...poi la cpu nn va a palla?insomma datemi dei consigli!!
Avatar utente
neonum6
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 633
Iscrizione: sabato 25 febbraio 2006, 17:13
Contatti:

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da neonum6 »

ti basta fargli ritornare un array di stringhe.
String [] array = new String[2];

;)
Impossible is 0.
Avatar utente
tux_errante
Prode Principiante
Messaggi: 210
Iscrizione: lunedì 25 febbraio 2008, 9:28
Località: Latina
Contatti:

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da tux_errante »

neonum6 ha scritto: ti basta fargli ritornare un array di stringhe.
String [] array = new String[2];

;)
Linux User:#502728     Rivista Debian Italiana
Ubuntu è Gnu/linux ... Gnu/linux non è Ubuntu.  -> blog <-
misterxxitalia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: domenica 11 marzo 2007, 22:15

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da misterxxitalia »

ho capito utilizzerò un vector..mi sai dire come chiamare dopo 2 minuti un metodo lettura scrittura??
misterxxitalia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: domenica 11 marzo 2007, 22:15

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da misterxxitalia »

questo è per esempio un metodo da temporalizzare:

Codice: Seleziona tutto

  public void Beep() {
   System.out.println('\7');
}
in pratica produce un beep dalla cassa del computer ma cosi lo fa all'infinito...come farlo durare 1 sec?
misterxxitalia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: domenica 11 marzo 2007, 22:15

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da misterxxitalia »

:)
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da Zoff »

Per temporizzare puoi usare le sleep dentro dei cicli (così però blocchi il programma, ma se non devi fare altro è OK):

Codice: Seleziona tutto

while(true){
System.out.print('\7');
try{Thread.sleep(1000);}catch(Exception e){}
}
Questo emette il segnale acustico ogni secondo (1000millisecondi)...

Se devi inserirlo dentro un programma complesso meglio i thread ma per questo meglio se li studi :D

ciauz
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
misterxxitalia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: domenica 11 marzo 2007, 22:15

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da misterxxitalia »

sto aggiungendo il vettore ho fatto cosi:

Codice: Seleziona tutto

private Vector dati;

    public parametri ()
    {
        dati = new Vector();
    }
    
    public void  addAppuntamento(parametri n)
    {
dati.add(n); 
    
}
nn da errore ma dice che è sconsigliato perchè poco sicuro..mi spiegate il motivo?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da Zoff »

misterxxitalia ha scritto: sto aggiungendo il vettore ho fatto cosi:

Codice: Seleziona tutto

private Vector dati;

    public parametri ()
    {
        dati = new Vector();
    }
    
    public void  addAppuntamento(parametri n)
    {
dati.add(n); 
    
}
nn da errore ma dice che è sconsigliato perchè poco sicuro..mi spiegate il motivo?
Perché inserisci in una struttura privata dei dati provenienti dall'esterno...
In questa maniera chi utilizza il metodo ha un link che punta dentro la tua classe e puo' getire quella parte di memoria a tua insaputa creando inconsistenza nel sistema...
Dovresti crearti una copia di quei dati, se non erro si usa il metodo clone().

ciauz
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
misterxxitalia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: domenica 11 marzo 2007, 22:15

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da misterxxitalia »

allora ho fatto cosi:

Codice: Seleziona tutto

private Vector dati;

   public parametri ()
    {
        dati = new Vector();
    }
    
       public Vector getParametri()
     {
       Vector appunt = (Vector)dati.clone();
       return appunt;
     }
  public void  addAparametro(parametri n)
    {
getParametri().add(n); 
    
}
il problema mi si presenta quando chiamo il metodo..

Codice: Seleziona tutto

a.addAparametro(0,(""+parametri.getChild("minrimasti").getTextTrim()));
 a.addAparametro(1,(""+parametri.getChild("data").getTextTrim()));   
il metodo richiede un elemento io invece ho una stringa...come li trasformo??
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da Zoff »

misterxxitalia ha scritto: allora ho fatto cosi:

Codice: Seleziona tutto

private Vector dati;

   public parametri ()
    {
        dati = new Vector();
    }
    
       public Vector getParametri()
     {
       Vector appunt = (Vector)dati.clone();
       return appunt;
     }
  public void  addAparametro(parametri n)
    {
getParametri().add(n); 
    
}
il problema mi si presenta quando chiamo il metodo..

Codice: Seleziona tutto

a.addAparametro(0,(""+parametri.getChild("minrimasti").getTextTrim()));
 a.addAparametro(1,(""+parametri.getChild("data").getTextTrim()));   
il metodo richiede un elemento io invece ho una stringa...come li trasformo??
Non ho capito cosa intendi, dove sta il vero problema... Hai definito una classe parametri? A cosa serve? Perché l'hai inserita?
Inoltre, clone() lodevi chiamare sia quando restituisci il vettore (e fin qui OK) ma anche quando inserisci un oggetto nel vettore!
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
IppatsuMan
Prode Principiante
Messaggi: 199
Iscrizione: mercoledì 14 febbraio 2007, 1:31
Contatti:

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da IppatsuMan »

Zoff ha scritto:
misterxxitalia ha scritto: sto aggiungendo il vettore ho fatto cosi:

Codice: Seleziona tutto

    private Vector dati;

    public parametri ()
    {
        dati = new Vector();
    }
    
    public void  addAppuntamento(parametri n)
    {
        dati.add(n); 
    }
nn da errore ma dice che è sconsigliato perchè poco sicuro..mi spiegate il motivo?
Perché inserisci in una struttura privata dei dati provenienti dall'esterno...
In questa maniera chi utilizza il metodo ha un link che punta dentro la tua classe e puo' getire quella parte di memoria a tua insaputa creando inconsistenza nel sistema...
Dal codice sembrerebbe che "parametri" sia il nome della classe (male, le classi in Java devono iniziare sempre con la lettera maiuscola). Inserire un oggetto passato come parametro in un vettore va, in genere, benissimo. Dipende dalla semantica del tuo programma se l'oggetto vada clonato o meno prima di essere aggiunto - e dalla struttura dell'oggetto in questione, dato che se è un immutabile (ad esempio una stringa) non ha alcun bisogno di essere clonato. Suppongo che il warning che ricevi sia qualcosa tipo:

Codice: Seleziona tutto

Note: Sorgente.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Oppure:

Codice: Seleziona tutto

warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.Vector
a seconda del modo in cui compili il file. Il warning è dato dal fatto che utilizzi un Vector senza specificare che tipo di oggetti vi verranno inseriti. Se non sai cosa sono i generics, per ora puoi ignorare la questione e andare avanti, ma quando ti farai un po' di più le ossa su Java, sarà il caso di studiarli: sono un metodo che ti permette di avere il controllo dei tipi a compile-time anche sulle collezioni come Vector, ArrayList, HashMap e così via.
ハッカー
misterxxitalia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: domenica 11 marzo 2007, 22:15

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da misterxxitalia »

si il messaggio che ricevo è proprio quello!nel vettore devo metterci solo stringhe...dici che per ora queste cose posso sorvolarle?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da Zoff »

misterxxitalia ha scritto: si il messaggio che ricevo è proprio quello!nel vettore devo metterci solo stringhe...dici che per ora queste cose posso sorvolarle?
Se sono stringhe, e quindi oggetti a stato modificabile come diceIppatsuMan non c'è alcun bisogno...
La domanda è: perché l'incapsulamento dentro la classe parametri?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
misterxxitalia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: domenica 11 marzo 2007, 22:15

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da misterxxitalia »

ecco zoff ora ho capito la corbelleria che ho scritto!!!in pratica davo il vettore privato e la classe parametri pubblica!ecco come ho scritto adesso:

Codice: Seleziona tutto

private Vector parametri ()
    {
      Vector dati;
        dati = new Vector();
        return dati;
    }
    
 
  public void  addAparametro(String n, int index)
    {
  try{    
parametri().insertElementAt(n ,index); 
 }
 catch (ArrayIndexOutOfBoundsException ex)
   {
     System.err.println(ex);
   } 
  
}
ed ecco come lo invoco:

Codice: Seleziona tutto

 a.addAparametro((""+parametri.getChild("minrimasti").getTextTrim()),1);
 a.addAparametro((""+parametri.getChild("data").getTextTrim()),2);    
l'unica cosa è che nn so in quale punto del vettore devo mettere le stringhe nel punto 1,2, nn vanno bene...

Codice: Seleziona tutto

ava.lang.ArrayIndexOutOfBoundsException: 1 > 0
java.lang.ArrayIndexOutOfBoundsException: 2 > 0
come faccio a capirlo??grazie!
Ultima modifica di misterxxitalia il venerdì 19 settembre 2008, 13:52, modificato 1 volta in totale.
misterxxitalia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: domenica 11 marzo 2007, 22:15

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da misterxxitalia »

ho appena scoperto che nn aggiunge nulla al vettore..che sbaglio??
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da Zoff »

misterxxitalia ha scritto: ho appena scoperto che nn aggiunge nulla al vettore..che sbaglio??
Se lo usi come nel tuo penultimo post mi sembra piu' che ovvio...

Il tuo codice, cioè questo:

Codice: Seleziona tutto

private Vector parametri (){
	Vector dati;
	dati = new Vector();
	return dati;
}
    
public void  addAparametro(String n, int index){
	try{
		parametri().insertElementAt(n ,index); 
	}
	catch (ArrayIndexOutOfBoundsException ex{
		System.err.println(ex);
	} 
}
Ogni volta che chiami addAparametro() crea un nuovo vector con la funzione parametri(); e aggiunge l'elemnte al nuovo vector.
Nel momento in cui il metodo addAparametro() visto che Vectore era dichiarato dentro parametri() il GarbageCollector lo distrugge e ciao ciao inserimento...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
misterxxitalia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: domenica 11 marzo 2007, 22:15

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da misterxxitalia »

ecco perche nn riuscivo ad aggiungere nulla!!scusa come potrei aggirare il problema?grazie!
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da Zoff »

misterxxitalia ha scritto: ecco perche nn riuscivo ad aggiungere nulla!!scusa come potrei aggirare il problema?grazie!
Io non ho capito cosa devi fare in quella funzione...
L'unico modo per rendere persistenti i dati è creare un vector globale cioè dentro la classe ma fuori dalle funzioni...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
misterxxitalia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: domenica 11 marzo 2007, 22:15

Re: [JAVA]un metodo puo fare ritornare piu di una stringa?

Messaggio da misterxxitalia »

ora ti spiego questo è il metodo che carica delle stringhe (prese da un documento xml) su un vector:

Codice: Seleziona tutto

a.addAparametro((""+parametri.getChild("minrimasti").getTextTrim());
il metodo addAparemetro è fatto cosi:

Codice: Seleziona tutto

public void  addAparametro(String n, int index){
	try{
		parametri().insertElementAt(n ,index); 
	}
	catch (ArrayIndexOutOfBoundsException ex{
		System.err.println(ex);
	} 
}
e questo è il vettore (è privato per scopo di studio perchè è un dato delicato e non deve uscire dalla classe parametri):

Codice: Seleziona tutto

private Vector parametri ()
    {
      Vector dati;
        dati = new Vector();
        return dati;
  }
e qui arriva il problema:ho bisogno di leggere il contenuto del vettore e ho fatto questo metodo:

Codice: Seleziona tutto

public Vector getParametri()
     {
       Vector appunt= (Vector)parametri().clone();
       return appunt;
     }
prendo il mio vettore faccio una copia e lo faccio uscire:mi hai detto che creando un nuovo vettore tutto si azzera,infatti se chiamo il metodo:

Codice: Seleziona tutto

if(a.getParametri().isEmpty())     
    System.out.println("vettore vuoto");
esce sempre vettore vuoto!come risolvo?grazie in anticipo!
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti