Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Java - aiuto per dividere stringhe in un file

    Ciao a tutti.
    E' la prima volta che scrivo in questo forum quindi scusate se per errore infrango qualche regola. Ho un piccolo problema. E' da qualche settimana che ho iniziato a studiare java e il mio professore mi ha chiesto di creare un dizionario italiano-inglese. In pratica io ho un file .txt con tutte le parole che mi servono. Le parole sono in questo formato:

    A
    [PREP] TO. [PREP] AT. [PREP] IN. [PREP] FOR. [PREP] BY. [PREP] PER. [PREP] OF. [PREP] ON
    A BABORDO
    [A] PORT
    A BASSO PREZZO
    [ADV] CHEAP
    ecc ecc..

    Il mio compito è quello di stampare la parola italiana così com'è e poi, per quanto riguarda la traduzione in inglese, eliminare sia "[PREP]" o le altre sigle tra parentesi sia TUTTO quello che c'è dopo il punto (punto compreso) lasciando una sola traduzione. Quindi il programma alla fine dovrebbe venire una cosa del genere:

    A
    TO
    A BABORDO
    PORT
    ecc ecc..

    Ho letto girovagando su internet che ci sono diversi metodi per dividere una stringa, ma non riesco a capire come fare per escludere il "superfluo". Qualcuno può aiutarmi please?

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    utilizzando per esempio .split(argomento) puoi dividere una stringa in un array di stringhe, quindi ti basterà selezionare l'elemento che ti serve nell'array.
    Questo è il metodo più immediato a mio parere.

  3. #3
    Sono riuscito a risolvere il grosso del problema, non capivo come fare a stampare un determinato elemento dopo aver diviso il tutto con il metodo split. Ora mi manca solo una piccola cosa.. Devo cercare di togliere il "." perchè in alcune parole il punto è attaccato alle parole tradotte e il metodo split li considera una stringa unita. Grazie comunque per il consiglio!!

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Puoi utilizzare il metodo substring unito a length se si tratta dell'ultimo carattere, uppure riutilizzare split con parametri diversi, ci sono altri modi, io ti suggerisco i più generali e intuitivi, buona fortuna

  5. #5
    Ora sono riuscito a togliere anche i punti con substring come hai suggerito tu.. Solo che ora che provo a far partire il file originale (con più di 5000 parole) il programma va in errore e precisamente mi esce fuori: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
    Qualcuno sa che come mai è uscito questo errore? Il codice del programma è il seguente:

    codice:
    public class traduttore {
     public static void main(String[] args) throws FileNotFoundException, IOException {
     int num=0;
     int c=0;
     int stringa;
     FileReader file = new FileReader("dizionario.txt");
     Scanner in = new Scanner(file);
     while (in.hasNext()) {
          String line = in.nextLine();
          c=c+1;
          if (c%2==0) {
               String[] tokens= line.split("\\s");
               stringa=tokens[1].length();
               if (tokens[1].substring(stringa-1,stringa).equals("."))
               { 
                   System.out.println(tokens[1].substring(0,stringa-1)); 
               }
               else
               {        
                 System.out.println(tokens[1]);
               }
           } 
         else 
           { 
               System.out.println(line); 
           }
     } 
    file.close(); 
    }
    }

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Stai usando un indice troppo grande per l'array che hai, esempio:
    hai un array di stringhe con 1 stringa e cerchi di leggere la seconda stringa che non c'è.
    Credo che questo sia effettivamente il problema...
    Controlla dopo gli split quanti elementi sono presenti negli array e ricorda che l'indice in java parte sempre da 0.
    Più di così non posso dirti, anche perchè non dispongo nemmeno di un campione del file che stai analizzando.

    P.s. ti consiglio di prendere dei brevi stralci campione del file e di provare a svolgere i passaggi a mano seguendo il tuo codice (scrivili o rischi di dimenticarti), ti accorgerai immediatamente di dove è situato l'errore!

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.