FileReader - read.nextInt()

Oi.
Já tenho estado horas, há volta do meu programa mas nao sei como resolver isto:
eu quero ler de um ficheiro Chat.txt.

FileReader reader = new FileReader(“Chat.txt”);
Scanner read = new Scanner(reader);
int numContactos = read.nextInt();
int maxActivo = read.nextInt();
int maxContactosReset = read.nextInt();
…(tem mais coisas, mas o erro esta aqui)

da-me um erro em int numContactos = read.nextInt();

que diz:

xception in thread “main” java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Main.readFromFile(Main.java:746)
at Main.main(Main.java:20)

alguem me pode ajudar.

Nao posso fazer com bufferReader, nem nada do genero, porque nao me é permitido pela professora.
Apenas com o FileReader

O tamanho está estourando o range do int. Tente long ou BigDecimal.
ex:

long numContactos = read.nextLong();

BigDecimal numContactos = read.nextBigDecimal();

flw

continua a dar o mesmo erro!!

,mas obg.

posta o conteúdo do Chat.txt

3
2
3
jose ferraz
m
18
ze_warning
war
Desconhecidos
online
0
2
2
0
ola ze
adeus ze
jorge ferraz
m
22
sl_pepino
jomifre
Desconhecidos
online
1
1
0
1
recebi
joana santos
f
30
sl_pepino
gone
Desconhecidos
online
1
0
0
0

o que tenho é isto:

if(read.hasNext()){ //só vai introduzir os dados do ficheiro se ele tiver alguma coisa
aMain.readFromFile(args);
}

depois vai ao ReadFromFile():

public void readFromFile(String[] args) throws Exception{
	FileReader reader = new FileReader("Chat.txt");
	Scanner read = new Scanner(reader);
	int numContactos = read.nextInt();
	int maxActivo = read.nextInt();
	int maxContactosReset = read.nextInt();
	
	for(int i=0; i<numContactos;i++){
		String nomeCompleto = read.next();
		char sexo = read.next().charAt(0);
		int idade = read.nextInt();
		String email = read.next();
		String nick = read.next();
		aMessenger.addContact(nomeCompleto, nick, sexo, idade, email);
		String grupo = read.next();
		aMessenger.defineGroup(nick, grupo);
		String estado = read.next();
		aMessenger.changeStatus(nick, estado);
		boolean block = read.nextBoolean();
		if(block)
			aMessenger.blockContact(nick);
		else
			aMessenger.deblockContact(nick);
		boolean active = read.nextBoolean();
		if(active)
			aMessenger.contactTC(nick);
                           }
               }

antes do if(read.hasNext()){

tem

FileReader reader = new FileReader(“Chat.txt”);
Scanner read = new Scanner(reader);

[quote=warning]Oi.
Já tenho estado horas, há volta do meu programa mas nao sei como resolver isto:
eu quero ler de um ficheiro Chat.txt.

FileReader reader = new FileReader(“Chat.txt”);
Scanner read = new Scanner(reader);
int numContactos = read.nextInt();
int maxActivo = read.nextInt();
int maxContactosReset = read.nextInt();
…(tem mais coisas, mas o erro esta aqui)

da-me um erro em int numContactos = read.nextInt();

que diz:

xception in thread “main” java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Main.readFromFile(Main.java:746)
at Main.main(Main.java:20)

alguem me pode ajudar.

Nao posso fazer com bufferReader, nem nada do genero, porque nao me é permitido pela professora.
Apenas com o FileReader[/quote]

http://www.guj.com.br/posts/list/50115.java

tá, mas o que você quer fazer? use try… catch

o problema acontece quando você lê “nomeCompleto”. É que você está lendo apenas o primeiro nome, pois é um nome composto, separado por espaço. Ai, o que acontece, como faltou a leitura do segundo nome “ferraz”, suas sucessivas leituras passam a obter valores incorretos, até chegar na idade, que está tentando obter um inteiro, e na verdade está recebendo “m”.
Experimente debugar e ler o javadoc da classe Scanner, ai vai um trecho?