Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di tappoz
    Registrato dal
    Sep 2004
    Messaggi
    21

    [Java] ricevere stringhe in input

    salve raga!
    volevo avere 1 dritta a riguardo del problema d ricezione stringhe

    se le faccio ricevere in input e uso StringTokenizer lui mi estrae i token basandosi sugli spazi o sui TAB
    ma se io x forza d cose ricevo delle stringhe in cui ho coppie d numeri e tra sti numeri ho parentesi virgole ecc ecc e poi nn sò a priori quante coppie riceverò ke cosa posso usare???


    grazie mille!!!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Lo StringTokenizer non spacca i tokens necessariamente per spazi e tab: puoi scegliere tu quale o quali caratteri usare come separatori di tokens. Questi sono tutti i costruttori a disposizione:
    codice:
    StringTokenizer(String str)
    StringTokenizer(String str, String delim)
    StringTokenizer(String str, String delim, boolean returnDelims)
    Li prendo in esame uno alla volta:

    Il primo costruisce uno StringTokenizer per tokenizzare la stringa str utilizzando come separatori i caratteri di default: SPAZIO, TAB, NEW LINE, RITORNO CARRELLO, LINE FEED. I caratteri delimitatori non verranno ritornati come tokens

    Il secondo costruisce uno StringTokenizer per tokenizzare la stringa str utilizzando come separatori tutti i caratteri della stringa delim. I caratteri delimitatori non verranno ritornati come tokens.

    Il terzo costruisce uno StringTokenizer per tokenizzare la stringa str utilizzano come separatori tutti i caratteri della stringa delim e ciascun carattere delimitatore incontrato verrà ritornato o meno come token a seconda del parametro booleano returnDelim.


    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

  3. #3
    Utente di HTML.it L'avatar di tappoz
    Registrato dal
    Sep 2004
    Messaggi
    21
    ah grazie 1000!!! nn ne venivo fuori mmmh nn sò usare molto le informazion i della libreria std ergo ero bloccato

    ma quindi in una stringa così:
    codice:
    {"(-43.54,632.5331)","(43.53,632.5332)","(-652.23000,00.000)"}
    se io nn sò a priori quanti parametri mi darà la stringa cioè devo fare dei cicli x vedere quando incontro la parentesi quella d kiusura?

    o cm poxo impostare il metodo hasMoreTokens()???

    grazie ancora!

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Non ho capito molto, ma piano piano ne verremo fuori

    Innanzitutto, quella stringa lì la leggi da un file? Perchè non saprei se quella è una stringa unica, se sono 3 stringhe o cosa...

    Poi, data quella stringa in input, cosa vuoi ottenere in output?


    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 L'avatar di tappoz
    Registrato dal
    Sep 2004
    Messaggi
    21
    eh grazie x il supporto a questo giovincello

    io ho in input (mettiamo da console nn è necessario ke sia da file) una stringa come quella che è tutta così

    c sn 3 coppie d numeri ke corrispondono a coordinate "x" "y" d ipotetici punti

    penso ke creerò un oggetto "coordinate" in cui inserirò le 2 coordinate "x" "y" e poi creerò un array d oggetti coordinate

    ma io nn sò a priori quante coppie mi forniranno da input...
    cioè so solo ke c'è l'apertura e la kiusura cn le graffe e ogni coppia ha le sue parentesi tonde e poi vedi ke c sn anke le virgole

    grazie!!!

    adexo ho poco tempo x smanettarci sù ma nel giro d 1 settimana penso d riuscire a cavarne fuori qualcosa, se riesci a darmi 1 dritta te ne sarò grato!

    aloa!

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Ok... vediamo se ho capito.
    Tu avrai una applicazione, supponiamo si chiami Applicazione (che fantasia, eh?). Tu la avvii dal prompt e gli passi la stringa che mi hai dato sopra (senza spazi, immagino, altrimenti le cose si complicano un po'):
    codice:
    C:\> java Applicazione {"(-43.54,632.5331)","(43.53,632.5332)","(-652.23000,00.000)"}
    Ho detto bene? Spero di sì.
    Ora, supponendo che la cosa sia proprio così, vediamo come spaccare la stringa, ottenendo le coordinate di cui hai bisogno:
    codice:
    public static void main(String [] args) {
       dividoStringa(args[0]);
    }
    ...
    private static void dividoStringa(String stringa) {
       // Tokenizziamo la stringa secondo le virgolette:
       StringTokenizer st = new StringTokenizer(stringa, "\"");
    
       // Prendo tutti i tokens, ma scarto il primo: '{'
       st.nextToken();
       Strint token = null;
       while (st.hasMoreTokens()) {
          token = st.next();
          // devo dividere le due coordinate se non sono all'ultimo token
          if (st.hasMoreTokens()) dividiCoordinate(token);
       }
    }
    ...
    private static void dividiCoordinate(String token) {
       // Ho una stringa di questo tipo: '(numero,numero)'
       int coordinataX;
       int coordinataY;
    
       // Prendo la prima coordinata:
       // dal carattere dopo la prima parentesi alla virgola esclusa
       int posVirgola = token.indexOf(",");
       coordinataX = Integer.parseInt( token.substring(1, posVirgola) );
    
       // Prendo la seconda coordinata:
       // dal carattere dopo la virgola, alla parentesi chiusa esclusa
       coordinataY = Integer.parseInt( token.substring(posVirgola+1, token.length()-1) );
    
       // Ora ho le due coordinate numeriche,
       // le salvo nella classe che si chiama Coordinate??
       vettore.add( new Coordinate(coordinataX, coordinataY) );
    }
    Spero che questo codice ti possa essere d'aiuto. Il codice l'ho scritto al volo, potrebbero esserci degli errori.

    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 L'avatar di tappoz
    Registrato dal
    Sep 2004
    Messaggi
    21
    grazieeeeeee!!!

    proverò e t farò sapere!


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 © 2025 vBulletin Solutions, Inc. All rights reserved.