Programa não executa

11 respostas
H

Esse programa não executa, uso o eclipse e ele não acusa nenhum erro.

package Primeira_aula;
import javax.swing.JOptionPane;
public class Eleicao {
	
	public static void main (String args[]){
	
	char voto, continua=0;
	double contA=0, contB=0, contC=0, total=0;
	
	
	while (continua == 's'){
	
	voto = JOptionPane.showInputDialog (" Qual candidato?\n A - B - C\n P para parciais ").toLowerCase().charAt(0);
	
	switch (voto){
	
	case 'A':
		contA++;
		break;
	case'B':
		contB++;
		break;
	case 'C':
		contC++;
		break;
		
	case 'P':

		JOptionPane.showMessageDialog (null, " A recebeu: " + ((contA / total) * 100)+ " % dos votos\n " +
				 " B recebeu: " + ((contB / total) * 100)+ " % dos votos " +
				 " C recebeu: " + ((contC / total) * 100)+ " % dos votos ");	
		break;
	}
	total = contA + contB + contC;
	
	if (contA > contB && contA > contC){
		JOptionPane.showMessageDialog (null, "venceu A");
	}
	if (contB > contC){
		JOptionPane.showMessageDialog (null, "venceu B");
	}
	else {
		JOptionPane.showMessageDialog (null, "venceu C");
		
			}
		}
	}
}

11 Respostas

pmlm
halflife1940:
char voto, continua=0;
	
	while (continua == 's'){

Continua não é 's', logo não entra no while.

H

É mesmo, nem tinha percebido, eu inicializei com ‘s’.

Obrigado

Christian_Borges

Concordo com o post acima:

Só uma dica. Preste atenção no nome do pacote:

package Primeira_aula;

Em Java, o padrão para definição de nomes de pacote tem que ter iniciais minúsculas e seguir o padrão CamelCase:

Exe.:

package primeiraAula;

Valeu!

Z111
halflife1940:
Esse programa não executa, uso o eclipse e ele não acusa nenhum erro.
package Primeira_aula;
import javax.swing.JOptionPane;
public class Eleicao {
	
	public static void main (String args[]){
	
	char voto, continua=0;
	double contA=0, contB=0, contC=0, total=0;
	
	
	while (continua == 's'){

}

"continua" é igual a 0, então != 's' o que significa que por leis estabelecidas pelo XGH, nunca executará este while...

H

Outro probleminha, agora ele axecuta, mas não esta computando os votos de cada candidato e quando coloco 'n' para continuar ele continua.
Eu olhei várias vezes e não consigo encontrar o que esta de errado.

package primeiraAula;
import javax.swing.JOptionPane;
public class Eleicao {
	
	public static void main (String args[]){
	
	char voto, continua='s';
	double contA=0, contB=0, contC=0, total=0;
	
	while (continua == 's'){
	
	voto = JOptionPane.showInputDialog (" Qual candidato?\n A - B - C\n P para parciais ").toLowerCase().charAt(0);
	
	switch (voto){
	
	case 'A':
		contA++;
		break;
	case'B':
		contB++;
		break;
	case 'C':
		contC++;
		break;
		
	case 'P':
		JOptionPane.showMessageDialog (null, " A recebeu: " + ((contA / total) * 100)+ " % dos votos\n " +
				 " B recebeu: " + ((contB / total) * 100)+ " % dos votos " +
				 " C recebeu: " + ((contC / total) * 100)+ " % dos votos ");	
		break;
	}
	
	JOptionPane.showInputDialog("Continua?").charAt(0);
	total = contA + contB + contC;

	}//while
	
	JOptionPane.showInputDialog ("A recebeu " + contA + " votos\n" +
			"B recebeu " + contB + " votos\n" +
			"C recebeu " + contC + " votos\n" );
	
	if (contA > contB && contA > contC){
		JOptionPane.showMessageDialog (null, "venceu A");
	}
	if (contB > contC){
		JOptionPane.showMessageDialog (null, "venceu B");
	}
	else {
		JOptionPane.showMessageDialog (null, "venceu C");
		}
	
	
		
	}
}
pmlm
halflife1940:
JOptionPane.showInputDialog("Continua?").charAt(0);

- Não estás a alterar o valor de "continua"...

- 'A' e 'a' são letras diferentes.

Outra coisa, tens mal os ifs no final, falta um else.

pedruhenrik

vê se ajuda:

import javax.swing.JOptionPane;

public class Main {

	public static void main(String args[]) {

		char voto, continua = 's';
		double contA = 0, contB = 0, contC = 0, total = 0;

		while (continua == 's') {

			voto = JOptionPane.showInputDialog(" Qual candidato?\n A - B - C\n P para parciais ").toLowerCase().charAt(0);

			// os cases estavam com letra maiuscula e na linha 12 vc define q voto sera minusculo
			switch (voto) {
			case 'a':
				contA++;
				break;
			case 'b':
				contB++;
				break;
			case 'c':
				contC++;
				break;

			case 'p':
				JOptionPane.showMessageDialog(null, " A recebeu: "
						+ ((contA / total) * 100) + " % dos votos\n "
						+ " B recebeu: " + ((contB / total) * 100)
						+ " % dos votos " + " C recebeu: "
						+ ((contC / total) * 100) + " % dos votos ");
				break;
			}

			String cont = JOptionPane.showInputDialog(null, "Continua?");// recebe String cont p/ comparar no while
			continua = cont.charAt(0); // char continua recebe convertido valor String cont
			total = contA + contB + contC;
			
		}// while

		JOptionPane.showInputDialog("A recebeu " + contA + " votos\n" + "B recebeu " + contB + " votos\n" + "C recebeu " + contC + " votos\n");

		//acho q fica mais claro assim a "apuracao" hehe
		if (contA > contB && contA > contC) {
			JOptionPane.showMessageDialog(null, "venceu A");
		} else if (contB > contA && contB > contC) {
			JOptionPane.showMessageDialog(null, "venceu B");
		} else if (contC > contA && contC > contB) {
			JOptionPane.showMessageDialog(null, "venceu C");
		} else if (contC == contA || contC == contB || contB == contA ){
			JOptionPane.showMessageDialog(null, "Ocorreu empate!");
		}

	}
}

boa sorte aé! ^^

H

EDIT.

[code]if (contA > contB && contA > contC){
JOptionPane.showMessageDialog (null, " Venceu A ");
}
if (contB > contC && contB > contA){
JOptionPane.showMessageDialog (null, " Venceu B ");
}
else
{JOptionPane.showMessageDialog (null, " Venceu o C ");}

if (contB == contA || contA == contC || contC == contB)
{JOptionPane.showMessageDialog (null, " EMPATE! ");}code]

"Obrigadão" pela ajuda, agora não entendi quando se usa só if - else ou else if, como você fez?
Eu fiz desse jeito deu certo também.

H
halflife1940:
EDIT.
if (contA > contB && contA > contC){
		JOptionPane.showMessageDialog (null, " Venceu A ");
	}
	if (contB > contC && contB > contA){
		JOptionPane.showMessageDialog (null, " Venceu B ");
	}
	else 
		{JOptionPane.showMessageDialog (null, " Venceu o C ");}
		
	if (contB == contA || contA == contC || contC == contB)
		{JOptionPane.showMessageDialog (null, " EMPATE! ");}

"Obrigadão" pela ajuda, agora não entendi quando se usa só if - else ou else if, como você fez?
Eu fiz desse jeito deu certo também.

pedruhenrik

da uma lida aqui:

http://www.guj.com.br/posts/list/89165.java
http://leepoint.net/notes-java/flow/if/60if-elseif.html
http://www.guj.com.br/posts/list/103568.java
http://download.oracle.com/javase/tutorial/java/nutsandbolts/if.html
http://www.w3schools.com/js/js_if_else.asp

…acho q explica melhor do que eu! hahaha

H

pedruhenrik:
da uma lida aqui:

http://www.guj.com.br/posts/list/89165.java
http://leepoint.net/notes-java/flow/if/60if-elseif.html
http://www.guj.com.br/posts/list/103568.java
http://download.oracle.com/javase/tutorial/java/nutsandbolts/if.html
http://www.w3schools.com/js/js_if_else.asp

…acho q explica melhor do que eu! hahaha

Agradeço a atenção, vou dar uma olhada.

Criado 11 de agosto de 2010
Ultima resposta 11 de ago. de 2010
Respostas 11
Participantes 5