Erro, nao reconheço o erro

4 respostas
UdusCode

acontece o seguinte erro sempre quando eu coloco o ultimo valor de entrada.
[img]http://img220.imageshack.us/img220/7596/semttulofty.png[/img]

aqui esta o codigo
public class Controle {
	
	int chapa1,chapa2,chapa3, nulo, branco, impate=0, pt=0;
	
	
	
	void EInicio(String c1, String c2, String c3){// Exibe Comentarios iniciais
		System.out.println("  Bem vindo a votação para presidencia do clube!");
		System.out.println("    A votação acontecera de uma seguinte forma :");
		System.out.println("    Os eleitores escolherao entre 3 chapas");
		System.out.println("");
		System.out.println("      Chapa 1 patido" + c1);
		System.out.println("      Chapa 2 patido" + c2);
		System.out.println("      Chapa 3 patido" + c3);
		System.out.println("");
		System.out.println("    As chapas sao representadas pelos seus respectivos numeros, como mostrado acima!");
		System.out.println("  Porfavor a votação ira comessar, organizem-se");
	}
		
	float PorcentV(int Vchapa1, int Vchapa2, int Vchapa3, int Vbranco,int Vtotal, int Vnulo){	//Procentagem de votos validos	
		int TotalVotosValidos = Vchapa1 + Vchapa2 + Vchapa3 + Vbranco;								
		return  TotalVotosValidos * 100 / Vtotal;		
	}
	
	float PorcentChapa1(int Vchapa1, int Vvalidos){//Porcentagem Chapa 1
		return  Vchapa1 * 100 / Vvalidos;		
	}
	
	float PorcentChapa2(int Vchapa2, int Vvalidos){//Porcentagem Chapa 2
		return  Vchapa2 * 100 / Vvalidos;		
	}
	
	float PorcentChapa3(int Vchapa3, int Vvalidos){//Porcentagem Chapa 3
		return  Vchapa3 * 100 / Vvalidos;		
	}
	
	float PorcentBranco(int Vbranco, int Vvalidos){//Porcentagem Branco
		return  Vbranco * 100 / Vvalidos;		
	}	
	
	float Porcentnulo(int Vtotal, int Vvalidos){//Porcentagem Nulos
		int Vnulos = Vtotal - Vvalidos;		
		return  Vnulos * 100 / Vtotal;		
	}	

	void Resultados(float PV, float PC1, float PC2, float PC3, float PB, float PN, int Vtotal, int Vvalidos ){// Exibe resultados
		System.out.println("");
		System.out.println("");
		System.out.println("");
		System.out.println("");
		System.out.println("   A votação esta finalizada   ");
		if ((PV >= 0 && PV <= 100) && (PC1 >= 0 && PC1 <= 100) && (PC2 >= 0 && PC2 <= 100) && (PC3 >= 0 && PC3 <= 100) && (PB >= 0 && PB <= 100) && (PN >= 0 && PN <= 100) && (Vtotal > -1 ) && (Vvalidos > -1 && Vvalidos<=Vtotal)){
			System.out.println("  A votação foi processada com sucesso!");
			System.out.println("");
			System.out.println("    Os resultados foram . . .");
			System.out.println("");
			System.out.println("      Foram Contados um total de " + Vtotal + " Votos");
			System.out.println("      Votos validos foram "+Vvalidos+" de Votos validos com uma porcentagem de "+PN+"% de votos validos");
			System.out.println("      Votos nulos foram " +nulo);
			System.out.println("      A chapa 1 fez "+ chapa1 + "votos com uma porcentagem de "+PC1+"% de votos");
			System.out.println("      A chapa 2 fez "+ chapa2 + "votos com uma porcentagem de "+PC2+"% de votos");
			System.out.println("      A chapa 3 fez "+ chapa3 + "votos com uma porcentagem de "+PC3+"% de votos");
			System.out.println(" Votos em branco teve um total de "+branco+" Votos com uma porcentagem de "+PB+"% dos votos validos");
			System.out.println("");
			System.out.println("");
		}else{
			System.out.println(" Ocorreu um erro no programa, porfavor chame um tecnico para verificar os valores");
			System.out.println("");
			System.out.println("");
			System.out.println(" As variaveis de porcentagem nao podem ser menores de 0 e nem de 100, os valores de cada variavel esta a sua direita");
			System.out.println("");
			System.out.println("   PV"+PV+"PC1"+PC1+"PC2"+PC2+"PC3"+PC3+"PB"+PB+"PN"+PN+"Vtotal"+Vtotal+"Vvalidos"+Vvalidos);
			
		}
	}

	void Ganhador(String c1, String c2, String c3){// Informa o ganhador
		if(chapa1 > chapa2 && chapa1 > chapa3 && chapa1 > branco){
			impate = 1;
			System.out.println("A Chapa "+c1+" Ganhou a eleição!");
		}
		if(chapa2 > chapa1 && chapa2 > chapa3 && chapa2 > branco){
			impate = 1;
			System.out.println("A Chapa "+c2+" Ganhou a eleição!");	
		}
		if(chapa3 > chapa2 && chapa3 > chapa1 && chapa3 > branco){
			impate = 1;
			System.out.println("A Chapa "+c3+" Ganhou a eleição!");
		}
		if(branco > chapa2 && branco > chapa1 && branco > chapa3){
			impate = 1;
			System.out.println("Votos em branco foram a maioria, Entao acontecera uma nova eleição!");
			pt = 1;
		}		
		if (impate==0){
			System.out.println("Ouve um empate, ira acontecer uma nova eleição");
			pt=1;
		}
	}

}

import java.util.Scanner;

public class Executavel {
	public static void main(String[] args){
		
		String Partido1 = "Partido dos Bala", Partido2 = "Partido dos Chicle", Partido3 = "Partido dos FreeChelse";
		int i,TotaisEleitores=20, Vvalidos;
		char v;
		
		Scanner entrada = new Scanner(System.in);
		Controle o = new Controle();
		
		
		while(o.pt==0){
			o.EInicio(Partido1, Partido2, Partido3);
			
			for(i=1;i<=TotaisEleitores;i++){
				System.out.println("1-Chapa1 - 2-Chapa2 - 3-Chapa3 - 0-Branco       Voto "+ i);
				v = (char) entrada.nextInt();
				if(v=='1'){
					o.chapa1++;
				}
				if(v=='2'){
					o.chapa2++;
				}
				if(v=='3'){
					o.chapa3++;
				}
				if(v=='0'){
					o.chapa1++;
				}
				if(v!='1' && v!='2' && v!='3'&& v!='0'){
					o.nulo++;
				}
				
				
			}
			
			Vvalidos = TotaisEleitores - o.nulo;
			o.Resultados(o.PorcentV(o.chapa1, o.chapa2, o.chapa3, o.branco, TotaisEleitores, o.nulo), o.PorcentChapa1(o.chapa1, Vvalidos), o.PorcentChapa2(o.chapa2, Vvalidos), o.PorcentChapa3(o.chapa3, Vvalidos), o.PorcentBranco(o.branco, Vvalidos), o.Porcentnulo(TotaisEleitores, Vvalidos), TotaisEleitores, Vvalidos  );
			
			o.Ganhador(Partido1, Partido2, Partido3);
			
			
		}
		
		
	}

}

Disculpa se for muita coisa, mais se alguem souber porfavor!

4 Respostas

lucas_guj

Ali diz que na linha 27 ( no caso do codigo que esta aqui no forum linha 26 ) voce esta tentando dividir um valor por zero, o que não é possível.

Ironlynx

loat PorcentV(int Vchapa1, int Vchapa2, int Vchapa3, int Vbranco,int Vtotal, int Vnulo){ //Procentagem de votos validos int TotalVotosValidos = Vchapa1 + Vchapa2 + Vchapa3 + Vbranco; return TotalVotosValidos * 100 / Vtotal; }
UdusCode ,
vários erros aí!Método em maíuscula, uso do float,não está verificando divisão por ZERO…
Para evitar esse divisão,poderia fazer algo do tipo:

Vc pode personalizar uma excessão só para isso, criar outra(ou outro método) para evitar a digitação de Strings(o disparará um IllegalArgumentException) e por aí vai.

suelengc

Olá UdusCode!

Esse erro significa que há uma divisão por zero tentando ser feita, só que não existe divisão por zero.

Eu rodei seu código e o erro aqui apareceu assim:

Exception in thread main java.lang.ArithmeticException: / by zero

at Controle.PorcentChapa1(guj.java:70)

at guj.main(guj.java:40)

Ou seja, a linha 40:

o.Resultados(o.PorcentV(o.chapa1, o.chapa2, o.chapa3, o.branco, TotaisEleitores, o.nulo), o.PorcentChapa1(o.chapa1, Vvalidos), o.PorcentChapa2(o.chapa2, Vvalidos), o.PorcentChapa3(o.chapa3, Vvalidos), o.PorcentBranco(o.branco, Vvalidos), o.Porcentnulo(TotaisEleitores, Vvalidos), TotaisEleitores, Vvalidos  );

Chamou a linha 70 (o.PorcentChapa1):

float PorcentChapa1(int Vchapa1, int Vvalidos){//Porcentagem Chapa 1  
       return  Vchapa1 * 100 / Vvalidos;         
}

E deu o erro.

Corrija o valor que é atribuído a variável que deve funcionar.

Vvalidos = TotaisEleitores - o.nulo;

Abraços!

UdusCode

Brigadão gente deu certo!

Criado 20 de abril de 2012
Ultima resposta 21 de abr. de 2012
Respostas 4
Participantes 4