PDA

Visualizza la versione completa : [JAVA] Classe Scanner


fegret
15-10-2005, 12:38
Ciao a tutti...devo fare un esercizio x l'uni e non riesco a capire perch mi d l'errore che adesso v presento.La classe TestRubrica


Scanner tastiera = new Scanner(System.in);
try
{
System.out.print("Inserire il nome del file da caricare: ");
String path = tastiera.next();
Scanner file = new Scanner(new File(path));
while(file.hasNextLine())
{
file.findInLine("nome: (\\w+) cognome: (\\w+) via: (\\w+) nc: (\\w+) citta (\\w+) casa: (\\w+) uff: (\\w+)");
MatchResult result = file.match();
nome = result.group(1);
cognome = result.group(2);
via = result.group(3);
citta = result.group(4);
casa = result.group(5);
uff = result.group(6);
System.out.println(nome+" "+cognome+" "+via+" "+citta+" "+casa+" "+uff);
}
file.close();
} catch (IOException e) {e.printStackTrace();}

Questo invece il file dal quale leggo i dati:
nome: Mario cognome: Rossi via: Po nc: 23 citta: Torino casa: 0118888888 uff: 0116789562393
nome: Anna cognome: Bianchi via: Roma nc: 345 citta: Torino casa: 0115555555 uff: 0
nome: Gigi cognome: Verdi via: Volpiano nc: 7 citta: Brandizzo casa: 0113333333 uff: 0
nome: Lucia cognome: Neri via: Messene nc: 45 citta: Ivrea casa: 012387324 uff: 01257774356
nome: Angelo cognome: Verdi via: Roma nc: 7 citta: Ivrea casa: 0125435587 uff: 0

Quando gli dico il file dal quale leggere il tutto mi d questo errore:
Exception in thread "main" java.lang.IllegalStateException: No much result available
at java.util.Scanner.match(Scanner.java:1239)
at TestRubrica.main(TestRubrica.java:33)

netarrow
15-10-2005, 14:16
IllegalStateException: Signals that a method has been invoked at an illegal or inappropriate time. In other words, the Java environment or Java application is not in an appropriate state for the requested operation.

Praticamente

String path = tastiera.next();

viene chiamato in un momento sbagliato, "No much result available" fa sembrare che tastiera.next non abbia nulla da ritornare.
Prova a leggere il file in altro modo, con un readLine di un BufferedReader.

senn, invece di

tastiera.next();

prova ad usare

tastiera.nextLine();

:ciauz:

fegret
15-10-2005, 14:35
grazi...questo prob l'ho risolto...
ho un altro problema per... :dh:
non mi funziona questa: prova.findInLine("nome: (\\w+) cognome: (\\w+) via: (\\w+) citta: (\\w+) casa: (\\w+) uff: (\\w+)");

prova un oggetto Scanner al quale gli ho passato una riga letta dal file...
se la stampo la riga me la stampa tranquillamente.

se al posto di prova gli mette una variabile stringa funziona...

sto impazzendo!!!grazie in anticipo

netarrow
16-10-2005, 10:58
non funziona? da errori o cos'altro?

fegret
16-10-2005, 12:48
mi lancia l'eccezione IllegalStateException...questo se come stringa inserisco la riga letta dal file...
altrimenti se la stringa la creo io non me lo fa e funziona tutto...

Loading