2015-08-01 18 views
6

Sto aiutando le mie sorelle con un semplice programma java e sono perplesso. Hanno solo imparato le lezioni dello scanner per leggere il contenuto del file, quindi penso che dovrebbero usare la classe scanner. Ogni riga contiene lettere e potenzialmente uno spazio vuoto, e speriamo di memorizzare ogni riga in un array. Questo funziona bene e dandy fino a quando una delle linee contiene qualcosa come:Lettura in linea con lo spazio vuoto alla fine usando la classe scanner java

ABCDE F (lo spazio vuoto dopo f deve essere letto come parte della linea ).

Tuttavia, scanner.nextLine() sembra ignorare quest'ultimo spazio vuoto. Ho pensato che avrei potuto impostare il mio delimitatore scanner per \n in questo modo:

scanner.useDelimiter("\n") 

e quindi utilizzare scanner.Next() da lì, ma questo ancora non sembrano funzionare. Ho cercato su Google e ho dato un'occhiata ad alcune domande StackOverflow. Questa domanda qui sembra suggerire che questo non è fatto facilmente con la classe scanner: How to read whitespace with scanner.next()

Qualche idea? Mi sembra che ci sia un modo semplice per cui sto trascurando.

Questo è come mi sto leggendo nelle linee:

While(scanner.hasNextLine(){ 
    String nextLine = scanner.nextLine(); 

Utilizzando l'esempio precedente, la mia stringa sarebbe leggere abcde f. Alla fine si libererà dello spazio vuoto. Ho anche provato a usare hasNext e next. Perdonami formattazione, sto modificando su un telefono.

+0

Mostra la parte che legge ogni riga. Assicurati di non utilizzare alcun [trim()] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()) – ecle

+0

Verifica il contenuto per assicurarti di cosa i caratteri sono presenti in ogni riga del file utilizzando Notepad ++ che è in grado di mostrare graficamente tutti i caratteri non stampati utilizzando la funzione "mostra tutti i caratteri" dalla barra dei menu. Assicurati che la codifica del file sia corretta dalla sorgente originale poiché la codifica di file diversi può essere un problema durante la lettura di un file (UTF-8, ASCII, ecc.) – ecle

+0

Lo faremo in un po ', grazie. Cosa sto cercando, che lo spazio vuoto si presenta? Non sono sicuro che sia il problema dei file perché i file che abbiamo letto sono forniti per testare. – Kevin

risposta

2

Salvare il file di testo come codifica ANSI e riprovare.

A destra, scanner.nextLine() catturerà tutto nella linea, compresi gli spazi.

scanner.next() non acquisisce spazi bianchi poiché il delimitatore è spazi bianchi per impostazione predefinita.