public Candidatos(int quanti, String listaDeDeputados)
throws DeputadosException {
try {
if (quanti > 10)
throw new DeputadosException(
"Número maior que o máximo(10) de deputados.\n");
dep = new Deputado[quanti];
BufferedReader in = new BufferedReader(new FileReader(
"listaDeDeputados.txt"));
while (in.ready()) {
for(int i = 0;i<quanti;i++){
String[] tipo = in.readLine().split(": ");
if (tipo.equals("Federal")) {
String[] tempo = in.readLine().split(": ");
String[] nome = in.readLine().split(": ");
String[] idade = in.readLine().split(": ");
String[] sexo = in.readLine().split(": ");
String[] partido = in.readLine().split(": ");
String[] numero = in.readLine().split(": ");
String[] projeto = in.readLine().split(": ");
dep[i] = new Federal(Integer.parseInt(tempo[1]), nome[1],Integer.parseInt(idade[1]), sexo[1], partido[1],
Integer.parseInt(numero[1]), projeto[1]);
} else {
String[] estado = in.readLine().split(": ");
String[] nome = in.readLine().split(": ");
String[] idade = in.readLine().split(": ");
String[] sexo = in.readLine().split(": ");
String[] partido = in.readLine().split(": ");
String[] numero = in.readLine().split(": ");
String[] projeto = in.readLine().split(": ");
dep[i] = new Estadual(estado[1], nome[1],Integer.parseInt(idade[1]), sexo[1], partido[1],
Integer.parseInt(numero[1]), projeto[1]);
}
}
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public Deputado[] getDep() {
return dep;
}
public void setDep(Deputado d) {
for (int i = 0; i < dep.length; i++)
dep[i] = d;
}
}[/code]
Classe de teste:
[code]import java.util.Scanner;
public class Eleicao {
public static void main(String args[]) throws DeputadosException {
Scanner scanner = new Scanner(System.in);
System.out.println(“Insira a quantidade de deputados”
+ “.\n QUANTIDADE MÁXIMA 10.”);
int quantidade = scanner.nextInt();
Candidatos cand = new Candidatos(quantidade,“listaDeDeputados.txt”);
int cont = 0;
for(int i = 0;i<quantidade;i++){
System.out.println(cont++ + cand.getDep()[i].getNome()+"\n"+cand.getDep()[i].getNumero());
}[/code]
O erro que está acontecendo:
Exception in thread "main" java.lang.NumberFormatException: For input string: "Pafúncio"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Candidatos.<init>(Candidatos.java:41)
at Eleicao.main(Eleicao.java:9)
Alugém pode me dar uma luz do pq este erro está ocorrendo?
public Candidatos(int quanti, String listaDeDeputados)
throws DeputadosException {
int i = 0;
try {
if (quanti > 10)
throw new DeputadosException(
"Número maior que o máximo(10) de deputados.\n");
dep = new Deputado[quanti];
BufferedReader in = new BufferedReader(new FileReader(
"listaDeDeputados.txt"));
while (in.ready()) {
String[] tipo = in.readLine().split(": ");
if (tipo[tipo.length-1].equals("Federal")) {
String[] tempo = in.readLine().split(": ");
String[] nome = in.readLine().split(": ");
String[] idade = in.readLine().split(": ");
String[] sexo = in.readLine().split(": ");
String[] partido = in.readLine().split(": ");
String[] numero = in.readLine().split(": ");
String[] projeto = in.readLine().split(": ");
int t = Integer.parseInt(tempo[1]);
int id = Integer.parseInt(idade[1]);
int n = Integer.parseInt(numero[1]);
dep[i] = new Federal(t, nome[1],id, sexo[1], partido[1],
n, projeto[1]);
i++;
} else {
String[] estado = in.readLine().split(": ");
String[] nome = in.readLine().split(": ");
String[] idade = in.readLine().split(": ");
String[] sexo = in.readLine().split(": ");
String[] partido = in.readLine().split(": ");
String[] numero = in.readLine().split(": ");
String[] projeto = in.readLine().split(": ");
int id = Integer.parseInt(idade[1]);
int n = Integer.parseInt(numero[1]);
dep[i] = new Estadual(estado[1], nome[1],id, sexo[1], partido[1],n
, projeto[1]);
i++;
}
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public Deputado[] getDep() {
return dep;
}
public void setDep(Deputado d) {
for (int i = 0; i < dep.length; i++)
dep[i] = d;
}
}[/code]
Inclusive, no debug instanciou normalmente um Deputado Estadual, depois rodei no modo normal e deu erro.
acho que encontrei o erro…
quando voce le o arquivo .txt, você procura por Federal e começa a fazer o split…
mas voce esqueceu de considera tipo do candidato, dai quando chega na linha 40 do seu código ao invés de pegar a IDADE ele pega o nome…
tenta colocar antes do ESTADO(linha:38 ) o tipo.
como está no arquivo .txt
Tipo: Federal
Tempo de Política: 15
Nome: Pafúncio
Idade: 34
Sexo: M
Partido: PCR
Número: 1334
Projeto: Se eleito, prometo me eleger!
como está no seu código
if (tipo[tipo.length-1].equals("Federal")) {
String[] tempo = in.readLine().split(": ");
String[] nome = in.readLine().split(": ");
String[] idade = in.readLine().split(": ");
String[] sexo = in.readLine().split(": ");
String[] partido = in.readLine().split(": ");
String[] numero = in.readLine().split(": ");
String[] projeto = in.readLine().split(": ");
int t = Integer.parseInt(tempo[1]);
int id = Integer.parseInt(idade[1]);
int n = Integer.parseInt(numero[1]);
dep[i] = new Federal(t, nome[1],id, sexo[1], partido[1],
n, projeto[1]);
i++;
@edit
Debugguei até a linha 40, e atribui a idade.
Não é necessário pedir novamente o tipo, tendo em vista que se não for Federal
if (tipo[tipo.length-1].equals("Federal"))
//linha 22
Ele já cai no else como se fosse Estadual.
De fato a linha que está com erro é a linha:45
int id = Integer.parseInt(idade[1]);
No debug a idade está correta, aparece 23.
E também como podem ver o deputado instanciado também recebe todos os atributos corretamente.
Pode ver na imagem abaixo.
Cara…
debugei o teu projeto
e o q está acontecendo é que está está levando em consideração os “—”(traços) no arquivo .txt
retira eles que vai funcionar…
Tipo: Estadual
Estado: RS
Nome: Gremista
Idade: 23
Sexo: M
Partido: PCO
Número: 1221
Projeto: Se eleito, prometo dar um jeito para que o inter não ganhe o mundial!
Tipo: Federal
Tempo de Política: 15
Nome: Pafúncio
Idade: 34
Sexo: M
Partido: PCR
Número: 1334
Projeto: Se eleito, prometo me eleger!
[quote=caio.gaspar]Cara…
debugei o teu projeto
e o q está acontecendo é que está está levando em consideração os “—”(traços) no arquivo .txt
retira eles que vai funcionar…
Tipo: Estadual
Estado: RS
Nome: Gremista
Idade: 23
Sexo: M
Partido: PCO
Número: 1221
Projeto: Se eleito, prometo dar um jeito para que o inter não ganhe o mundial!
Tipo: Federal
Tempo de Política: 15
Nome: Pafúncio
Idade: 34
Sexo: M
Partido: PCR
Número: 1334
Projeto: Se eleito, prometo me eleger!
ou no lugar do
else
utiliza
else if(!tipo[0].equals("---"))
Exatamente, eu havia esquecido de tal detalhe…
Feito isto, ele deu array index out of bounds, dai coloquei +1 if pra incrementar o i somente enquanto ele for menos que quanti e funcionou legal