Estou tentando fazer um programa no dr java, estou bem no início, mas o exercício pede: "leia um número determinado de dados(Número do canal(4,5,7 e 12) e a porcentagem de pessoas que olham cada um). O comando zero deve finalizar a operação.
Sei que faltou os print mas no loop está travando.
public class Lista3_17{
public static void main (String args[]){
int status, canal, c4,c5,c7,c12;
c4=0; c7=0; c12=0; c5=0;
status=Entrada.leiaInt("A Tv está 1- ligada ou 2-desligada");
if(status==1){
canal=Entrada.leiaInt("Qual canal deseja assistir 4,5,7 e 12");
while (canal!=0){
if(canal==4){
c4=c4+1;
}
if(canal==5){
c5=c5+1;
}
if(canal==7){
c7=c7+1;
}
if(canal==12){
c12=c12+1;
}
}
if(canal!=4 || canal!=5 || canal!=7 || canal!=12){
System.out.println("Você digitou um canal inválido, tente novamente");
canal=Entrada.leiaInt("Qual canal deseja assistir 4,5,7, 12 ou 0- para desligar");
}
if(canal==0){
System.out.println("A Tv foi desligada");
}
}
if (status==2){
System.out.println("A Tv encontra-se desligada");
}
1º O travamento ocorre pois seu while está sendo finalizando na chave anterior ao if acima. Desta forma, a variável canal nunca é alterada.
Mova está chave para antes de
2º Outro detalhe, esta validação está incorreta.
o correto é if(canal != 4 && canal != 5 && canal != 7 && canal != 12)
Show acho que agora funcionou
Coloquei alguns prints para saber a quantidade de pessoas em um canal e porcentagem de telespectadores(tipo um ibope).
public class Lista3_17{
public static void main (String args[]){
int status, canal, c4,c5,c7,c12,ct;
c4=0; c7=0; c12=0; c5=0; ct=0;
status = Entrada.leiaInt("A Tv está 1- ligada ou 2-desligada");
if (status == 1) {
while (true) {
canal = Entrada.leiaInt("Qual canal deseja assistir 4,5,7 e 12 ou 0- para desligar");
if (canal == 4) {
c4 = c4 + 1;
}
if (canal == 5) {
c5 = c5 + 1;
}
if (canal == 7) {
c7 = c7 + 1;
}
if (canal == 12) {
c12 = c12 + 1;
}
ct=c4+c5+c7+c12;
if (canal != 4 && canal != 5 && canal != 7 && canal != 12) {
System.out.println("Você digitou um canal inválido, tente novamente");
}
if (canal == 0) {
System.out.println("A Tv foi desligada");
break;
}
}
}
if (status == 2) {
System.out.println("A Tv encontra-se desligada");
}
System.out.printf("A quantidade de pessoas que olham o canal 4 é "+c4+" e a porcentagem de telespectadores "+(c4/ct));
System.out.printf("A quantidade de pessoas que olham o canal 5 é "+c5+" e a porcentagem de telespectadores "+(c5/ct));
System.out.printf("A quantidade de pessoas que olham o canal 7 é "+c7+" e a porcentagem de telespectadores "+(c7/ct));
System.out.printf("A quantidade de pessoas que olham o canal 12 é "+c12+" e a porcentagem de telespectadores "+(c12/ct));