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

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    107

    java proble split parole file txt linea di comando

    cosa c'è che nonn va in questo main?
    ackage Eventoaula;
    import java.util.*;
    import java.io.*;
    public class Esercizio1 {
    public static void main (String [] args) throws IOException {

    Scanner sc = new Scanner(System.in);
    String[]S;
    do {
    String s=sc.nextLine();
    S = s.split(",");
    } while (sc.hasNextLine());


    for (String q:S)
    System.out.println(q);


    mi da come se la stringa S fosse vuota!!
    in questo programma dovrei leggere un file txt da linea di comando, che mi presenta una lista di righe di parole separate da una virgola dovrei quindi spliattre queste parole in modo da inserirle in un array, ma non ci riescooo
    cosa posso fare grazie

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Forse volevi scrivere questo?

    codice:
    public class Esercizio1 {
        public static void main (String [] args) throws IOException {
    
            System.out.println("Frase: ");
            Scanner sc = new Scanner(System.in);
            String[]S;
            do {
                String s=sc.nextLine();
                S = s.split(",");
    
                for (String q:S)
                    System.out.println(q);
            } while (sc.hasNextLine());
    
            sc.close();
        }
    }


  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    107
    utilizzando il tuo codice nel terminale mi da in output una riga vuota, neanche il println di "Frase:"

  4. #4
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Strano, io vedo questo:



    che infatti è il comportamento atteso.


  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    107
    Forse mi sono espresso male io (scusami ma sono alle prime armi), il comando che do io è: java NOME PROGRAMMA < es1.txt,
    inserisco il file.txt da splittare da linea di comando

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    107
    ci ho riprovato e ho risolto questo problema grazie mille! ora però devo chiederti 2 cose: innanzi tutto è obbligatorio mettere sc.close()? e seconda, la più importante, perchè se metto il ciclo for each fuori dal do-while non funziona? è come se l'array S possa essere utilizzato solo al suo interno

  7. #7
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Di nuovo non riesco a replicare il tuo problema: sono su linux e se faccio java -jar nomeJar.jar < nomeFile.txt dove il file txt contiene "ciao,come,stai" ottengo

    es1.png

    che è l'output atteso. Di fianco a "Frase: " non c'è scritto nulla, ma questo è normale perché non stiamo materialmente digitando sulla tastiera. Però le parole vengono visualizzate correttamente...


  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    107
    ah ho capito, e c'è un modo per mettere nell'array S tutte le parole separate da virgola del file .txt? perchè io nel mio programma avrei bisogno di utilizzarle in seguito, una roba tipo S=s.slit(",") +S;

  9. #9
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    1. sc.close() non è obbligatorio ma è una buona pratica: dopo che hai terminato di utilizzare una risorsa dovresti chiuderla e/o rilasciarla.

    2. tu vuoi leggere una riga e stampare le parole, poi leggere un'altra riga e stampare le parole, poi leggere un'altra riga ecc. Quindi la stampa (il ciclo for) la devi fare PRIMA della lettura della riga successiva. Altrimenti perdi tutto quello che avevi letto fino a quel momento. Di conseguenza

    codice:
    do {
        leggi e stampa (con ciclo for)
    } while (ci sono altre righe da leggere);

  10. #10
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Io farei così: crei un ArrayList<String> e lo chiami, ad esempio leMieStringhe. Poi fai quello che già stiamo facendo e memorizzi le parole contenute nella singola riga all'interno dell'array S con S = s.split(",") quindi scorri questo array con il solito ciclo for e, anziché stampare (o in aggiunta alla stampa), le aggiungi all'ArrayList leMieStringhe. Al termine leMieStringhe conterrà tutte le tue parole.

Tag per questa discussione

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.