Ciao a tutti!!
Ho un problemino con questo Scanner. Il problema è riportato nel codice del messaggio. A dispetto della lunghezza, è molto più semplice di quanto possa sembrare
Ecco cosa prevede la traccia originale
Si vuole implementare un programma per l’indicizzazione di documenti multimediali (testo, audio, video o immagini). Un file di indicizzazione, denominato indice.txt, è costrutto come una lista di documenti con alcuni campi comuni ed altri specifici di ogni tipologia di documento.
Per tutte tipologie di documenti sono memorizzati, uno per riga, i seguenti dati:
· Percorso nel file system (es: “C:/Documents/prova.doc”)
· Dimensione in bytes
· Data di creazione
· Data di ultima modifica
· Descrizione
· Formatto del file (es.: “mpg”, “avi”, “gif”, “jpeg”, “mp3”, “txt”, “doc”…)
Inoltre, per i documenti di tipo Audio si memorizza:
· Durata dell’audio in secondi (ad esempio 500, 3600)
Per i documenti di tipo Immagine si memorizzano le seguenti informazioni aggiuntive:
· Larghezza dell’immagine
· Altezza dell’immagine
Infine, per i documenti di tipo Video si memorizza:
· Durata del video in secondi (es.: 500, 3600)
Nel file indice.txt i dati di ciascun documento è preceduto da un’etichetta che ne indica il tipo (Testo, Audio, Immagine o Video).
Scrivere un programma che:
· Data una dimensione soglia, stampi le informazioni relative ai file che hanno una dimensione superiore alla soglia;
· Dati una dimensione ed un tipo di file, stampi i nomi di tutti i file del tipo dato con una dimensione superiore a quella data.
Ecco un esempio di file di testo:
Audio
C:/Audio/1.mp3
250000
10-05-2010
11-05-2010
Questo_file_contiene_un_brano_rock
mp3
600
Video
C:/Video/1.mpg
2700000
11-06-2010
12-06-2010
Questo_file_contiene_un_video_divertente
mpg
3600
Testo
C:/Documents/file1
10000
15-08-2009
16-08-2009
Curriculum_vitae
doc
Immagine
C:/Immagine/cielo.gif
15000
09-05-2010
12-05-2010
stellato
gif
600.58
454.45
Testo
C:/Documents/file2
14000
01-01-2011
08-01-2011
Progetto_A
doc
Immagine
C:/Immagine/prato.gif
15700
08-07-2009
12-07-2009
fiorito
gif
700
500
Ho creato la classe MyFile che gestisce un file generico e le sottoclassi AudioFile, VideoFile, ImageFile e TextFile per gestire i vari file. Il problema invece è con questa classe, IndexReader, che dovrebbe leggermi i dati inseriti in questo file e poi stamparmeli a video.

codice:
import java.io.FileReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;
import javax.swing.JFileChooser;
import java.util.HashSet;
import java.util.Iterator;

/**
 * A class to read file from an input source and generate an hash set of different
 * files
 * @author Simone
 *
 */
public class IndexReader
{
	public static HashSet<AudioFile> audioFiles = new HashSet<AudioFile>();
	public static HashSet<VideoFile> videoFiles = new HashSet<VideoFile>();
	public static HashSet<ImageFile> imageFiles = new HashSet<ImageFile>();
	public static HashSet<TextFile> textFiles = new HashSet<TextFile>();
	
	public static void main(String[] args) throws FileNotFoundException, 
		IOException
	{
		//Creo un nuovo oggetto per scegliere il percorso del file
		JFileChooser chooser = new JFileChooser();
		FileReader in = null;
		if (chooser.showOpenDialog(null) == chooser.APPROVE_OPTION)
		{
			File selectedFile = chooser.getSelectedFile();
			in = new FileReader(selectedFile);
			Scanner input = new Scanner(in);
			while (input.hasNext())
				read(input);
			
			PrintStream p = System.out;
			
			
			for (AudioFile a : audioFiles)
				p.println(a);
			for (VideoFile a : videoFiles)
				p.println(a);
			for (ImageFile a : imageFiles)
				p.println(a);
			for (TextFile a : textFiles)
				p.println(a);
			
			
			input.close();
			in.close();
		}
	}
	
	/*
	 * Il metodo per leggere da dal file di input. In questo caso sarà proprio
	 * il nostro file index.dat
	 */
	public static void read(Scanner s)
	{
		//Leggo tutte le stringhe predefinite per un file generico
		if (!s.hasNext()) return;
		String type = s.next();
		if (!s.hasNext()) return;
		String path = s.next();
		if (!s.hasNextInt()) return;
		int size = s.nextInt();
		if (!s.hasNext()) return;
		String creationData = s.next();
		if (!s.hasNext()) return;
		String lastModifiedData = s.next();
		if (!s.hasNext()) return;
		String description = s.next();
		if (!s.hasNext()) return;
		String format = s.next();
		
		/*Se la prima riga dice che è un file audio, allora se la riga successiva
		* è un intero, recupero la lunghezza in secondi e creo un nuovo oggetto
		* AudioFile, inserendolo nell'HashMap
		*/
		if (type.equalsIgnoreCase("audio"))
		{
			if (!s.hasNextInt()) return;
			int length = s.nextInt();
			audioFiles.add(new AudioFile(type, path, size, creationData, 
					lastModifiedData, description, format, length));
		}
		//Altrimenti se dice che è un file video, procedo allo stesso modo
		else if (type.equalsIgnoreCase("video"))
		{
			if (!s.hasNextInt()) return;
			int length = s.nextInt();
			videoFiles.add(new VideoFile(type, path, size, creationData, 
					lastModifiedData,	description, format, length));
		}
		/*Procedo allo stesso modo con un file immagine
		* In questo metodo c'è un errore, in quanto se ho nelle specifiche del
		* file d'ingresso dei numeri con una parte decimale (per esempio 600.58
		* e 454.45), la lettura del file non continua e non viene aggiunto
		* nulla all'HashMap imageFiles. Se invece i valori sono interi, tutto
		* procede alla perfezione
		*/
		else if (type.equalsIgnoreCase("immagine"))
		{
			if (!s.hasNextLine()) return;
			double width = s.nextDouble();
			if (!s.hasNextLine()) return;
			double height = s.nextDouble();
			imageFiles.add(new ImageFile(type, path, size, creationData, 
					lastModifiedData, description, format, width, height));
		}
		//Altrimenti è un file di testo
		else textFiles.add(new TextFile(type, path, size, creationData, 
				lastModifiedData, description, format));
	}
}
Non capisco perchè non riesce a leggere in input un numero double. Se dò ad un immagine i parametri altezza e larghezza di tipo double (come 600.58
454.45) non crea l'oggetto; se li passo senza virgola, invece, fila tutto liscio. Come mai?
Inoltre, vi sembra giusto come procedimento da seguire quello della mia classe IndexReader?

Grazie mille a tutti per le eventuali risposte