Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2022
    Messaggi
    2

    Esercizio sulla creazione di File di testo

    Salve, sto iniziando ad avvicinarmi al mondo della programmazione da poco e vorrei chiedervi un aiuto su un esercizio.

    Scrivere un programma che dato in input un nome lo cerca all'interno di un file di testo nomi.txt e se lo trova scrive in un altro file di testo risultato.txt la stringa "success" mentre nel caso opposto scrive "error nome non trovato".

    Lo so che per molti di voi sarà un esercizio banale, ma ripeto che mi sto avvicinando ora a questo mondo da autodidatta, ringrazio anticipatamente chi mi aiuterà.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ok, bene.
    Proponi intanto una bozza di soluzione, così da poterne discutere.

    Come saprai, da Regolamento non si può richiedere lo svolgimento di esercizi, né si può richiedere la scrittura di codice pronto.
    L'utente è tenuto a fornire il proprio codice sul quale gli altri potranno esprimersi con correzioni / suggerimenti, ecc.

    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 andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da ilanna Visualizza il messaggio
    Scrivere un programma che dato in input un nome lo cerca all'interno di un file di testo nomi.txt
    E aggiungo che dovresti anche precisare come è fatto tale file nomi.txt. I nomi come sono disposti? Uno per riga? Più nomi per riga? Su una riga sola?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2022
    Messaggi
    2
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Ok, bene.
    Proponi intanto una bozza di soluzione, così da poterne discutere.

    Come saprai, da Regolamento non si può richiedere lo svolgimento di esercizi, né si può richiedere la scrittura di codice pronto.
    L'utente è tenuto a fornire il proprio codice sul quale gli altri potranno esprimersi con correzioni / suggerimenti, ecc.

    Ciao.
    Volevo un aiuto al ragionamento, non volevo il codice scritto.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Supponendo che il file di testo contenga i nomi uno sotto l'altro, un approccio potrebbe essere questo:

    Il programma riceve in input il nome da cercare (tramite parametri del main oppure chiedendolo in input all'utente dopo l'avvio, qui immagino possa decidere tu la modalità di interazione).

    A questo punto avrai una variabile String che contiene il nome da cercare (chiamiamola "nomeDaCercare").
    Creiamo anche una variabile booleana (inizializzata a false) che ci dirà se il nome è presente nel file oppure no (chiamiamola "nomeContenuto").

    Il passo successivo sarà quello di aprire il file di testo (trattandosi di file di testo ci sarebbe la questione del charset utilizzato, ma al momento penso che possiamo "dare per scontato" che il file sia stato creato con il charset di default della macchina). Direi che un FileReader ci servirà. Su questo FileReader, per andar bene, aggancerei un BufferedReader così da poter effettuare le letture riga per riga.

    Ora serve un ciclo while che scorra riga per riga il file di testo fino a quando entrambe queste condizioni sono vere:
    1) La variabile "nomeContenuto" è uguale a false;
    2) Non abbiamo ancora raggiunto la fine del file;

    Appena una delle due condizioni non è più vera, il ciclo while si interrompe.

    Dentro al ciclo while dovremo effettuare queste operazioni:
    1) Leggere una riga dal file (la metteremo in una variabile chiamata "rigaLetta")
    2) Confrontare il contenuto della variabile "rigaLetta" con il contenuto della variabile "nomeDaCercare".
    Se sono uguali, mettiamo a true la variabile "nomeContenuto".

    Alla fine del ciclo while, all'interno della variabile "nomeContenuto" avremo true se il nome è presente nel file, false altrimenti. E questa cosa la andremo a scrivere nel file "risultato.txt". Per fare questo, apriamo in scrittura tale file (FileWriter su cui costruiamo un PrintWriter per andare bene a scrivere), ci scriviamo dentro e lo chiudiamo.

    Chiudiamo anche il file che abbiamo aperto in lettura (quello contenente tutti i nomi) e abbiamo finito.

    Ciao.

    PS: Il discorso sull'apertura e la chiusura dei file presuppone che tu conosca la gestione delle eccezioni; puoi gestire manualmente le operazioni di apertura/chiusura usando il classico try/catch/finally oppure far gestire le cose al try-with-resources.
    Ultima modifica di LeleFT; 03-02-2022 a 14:56
    "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

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.