importjava.io.BufferedReader;importjava.io.FileReader;importjava.io.IOException;publicclassCandidatos{privateDeputado[]dep;publicCandidatos(intquanti,StringlistaDeDeputados)throwsDeputadosException{try{if(quanti>10)thrownewDeputadosException("Número maior que o máximo(10) de deputados.\n");dep=newDeputado[quanti];BufferedReaderin=newBufferedReader(newFileReader("listaDeDeputados.txt"));while(in.ready()){for(inti=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]=newFederal(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]=newEstadual(estado[1],nome[1],Integer.parseInt(idade[1]),sexo[1],partido[1],Integer.parseInt(numero[1]),projeto[1]);}}}in.close();}catch(IOExceptione){e.printStackTrace();}}publicDeputado[]getDep(){returndep;}publicvoidsetDep(Deputadod){for(inti=0;i<dep.length;i++)dep[i]=d;}}
Classe de teste:
importjava.util.Scanner;publicclassEleicao{publicstaticvoidmain(Stringargs[])throwsDeputadosException{Scannerscanner=newScanner(System.in);System.out.println("Insira a quantidade de deputados"+".\n QUANTIDADE MÁXIMA 10.");intquantidade=scanner.nextInt();Candidatoscand=newCandidatos(quantidade,"listaDeDeputados.txt");intcont=0;for(inti=0;i<quantidade;i++){System.out.println(cont+++cand.getDep()[i].getNome()+"\n"+cand.getDep()[i].getNumero());}
Voce ta tentando atribuir esse Pafuncio que é uma String ao um int.
Algum desses Integer.parseInt(…) esta gerando á exceção.
Danillo_Moreno
Analise o erro:
java.lang.NumberFormatException: For input string: "Pafúncio"
Em algum lugar do arquivo que vc está lendo, está escrito Pafuncio onde deveria ter um numero…
Converter Pafuncio pra inteiro não dá…
Espero ter ajudado…
caio.gaspar
tenta degubar o código… fica mais facil…
F
Far.ST
caio.gaspar:
tenta degubar o código... fica mais facil...
Já debuguei, parece estar tudo correto, porém ainda persiste o erro.
Mudei o código assim:
importjava.io.BufferedReader;importjava.io.FileReader;importjava.io.IOException;publicclassCandidatos{privateDeputado[]dep;publicCandidatos(intquanti,StringlistaDeDeputados)throwsDeputadosException{inti=0;try{if(quanti>10)thrownewDeputadosException("Número maior que o máximo(10) de deputados.\n");dep=newDeputado[quanti];BufferedReaderin=newBufferedReader(newFileReader("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(": ");intt=Integer.parseInt(tempo[1]);intid=Integer.parseInt(idade[1]);intn=Integer.parseInt(numero[1]);dep[i]=newFederal(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(": ");intid=Integer.parseInt(idade[1]);intn=Integer.parseInt(numero[1]);dep[i]=newEstadual(estado[1],nome[1],id,sexo[1],partido[1],n,projeto[1]);i++;}}in.close();}catch(IOExceptione){e.printStackTrace();}}publicDeputado[]getDep(){returndep;}publicvoidsetDep(Deputadod){for(inti=0;i<dep.length;i++)dep[i]=d;}}
Inclusive, no debug instanciou normalmente um Deputado Estadual, depois rodei no modo normal e deu erro.
Poneis123
Vai debugando até o erro acontecer, linha a linha. Não tem como o erro acontecer quando executa normal e não acontecer no debug…
Recomendo que deixe um break point na linha 41 da classe Candidatos.
Att,
caio.gaspar
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!
@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
intid=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… como está o teu arquivo ??? estás jogando cada campo dentro de um novo Array ???
Não seria cada linha dentro de um Array ???
manda teu Árquivo e teu Projeto…
Abs []
F
Far.ST
adriano_si:
Cara… como está o teu arquivo ??? estás jogando cada campo dentro de um novo Array ???
Não seria cada linha dentro de um Array ???
manda teu Árquivo e teu Projeto…
Abs []
O arquivo está na pasta do projeto, e está anexo no primeiro post.
Estou jogando cada linha do arquivo em um array para tal.
Segue o projeto em anexo.
[]s
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
elseif(!tipo[0].equals("---"))
F
Far.ST
[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
elseif(!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