Ir ao conteúdo
  • Cadastre-se
Fake182

Repetição dentro de repetição

Recommended Posts

Bem, estou aprendendo java, e me deparei com um exercício o qual eu deveria fazer uma pesquisa captando a idade e a opinião das pessoas quanto ao filme, onde a entrada de dados sobre a opinião deve ser validada e o final da pesquisa será indicado quando a idade do usuário for informada como zero.

 

além disso, as saídas devem conter:

 

Quantidade de pessoas que respondeu a pesquisa

Média de idade das pessoas que responderam a pesquisa

Porcentagem de cada uma das respostas

 

 

meu problema é que quando eu digito digito zero para a idade, ela ainda pergunta a opinião (e esta esta está sendo contabilizada) antes de encerrar a execução... Se alguém puder me ajudar, fico grato !

package fixacao;import java.util.Scanner;public class Ex05 {	public static void main(String[] args) {	Scanner entrada = new Scanner(System.in);		int soma,id,optA,optB,optC,optD,optE,i;	double media,pctA,pctB,pctC,pctD,pctE;	String op;		i=-1;	id=-1;	soma=0;	optA=0;	optB=0;	optC=0;	optD=0;	optE=0;	media=0;	pctA=0;	pctB=0;	pctC=0;	pctD=0;	pctE=0;	op=null;		while(id!=0){		System.out.println("Insira a idade");		id=entrada.nextInt();				i++;		soma=soma+id;							do{			System.out.println("Insira a opinião");			op=entrada.next();			if (op.equalsIgnoreCase("A")){				optA++;			}else if (op.equalsIgnoreCase("B")){				optB++;			}else if (op.equalsIgnoreCase("C")){				optC++;			}else if (op.equalsIgnoreCase("D")){				optD++;			}else if (op.equalsIgnoreCase("E")){				optD++;			}else{				System.out.println("Escolha uma opinião válida");			}		} while((! op.equalsIgnoreCase("A")) && (! op.equalsIgnoreCase("B")) && (! op.equalsIgnoreCase("C")) && (! op.equalsIgnoreCase("D")) && (! op.equalsIgnoreCase("E")));		 	}		if (i!=0){		media=soma/i;		pctA=(double)optA/i;		pctB=(double)optB/i;		pctC=(double)optC/i;		pctD=(double)optD/i;		pctE=(double)optE/i;	}		System.out.println("Quantidade de pessoas que responderam a pesquisa: "+i);		System.out.println("Média de idade das pessoas que responderam a pesquisa: "+media);		System.out.println("Porcentagem de opinião A: "+pctA);		System.out.println("Porcentagem de opinião B: "+pctB);		System.out.println("Porcentagem de opinião C: "+pctC);		System.out.println("Porcentagem de opinião D: "+pctD);		System.out.println("Porcentagem de opinião E: "+pctE);				entrada.close();}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

meu problema é que quando eu digito digito zero para a idade, ela ainda pergunta a opinião (e esta esta está sendo contabilizada) antes de encerrar a execução... Se alguém puder me ajudar, fico grato !

 

 

Está verificação da condição ser igual a zero ou não deve ser feita antes da próxima etapa. Repare, logo depois da leitura da idade, o código já pergunta a opinião, independente do valor da idade (até mesmo se for negativa), ou seja, deve ter uma estrutura de seleção (if) antes da próxima etapa (só ler a opinião se a idade for válida)...


PS: cuidado com a identação, ela também é critério de avaliação:

Pelo que avaliei, tem dois trechos que não estão identados... (coloquei um comentário acima de cada um)

package fixacao;import java.util.Scanner;public class Ex05 {    //esse método está dentro da classe, logo vai um "dente" pra frente    public static void main(String[] args) {            Scanner entrada = new Scanner(System.in);                int soma,id,optA,optB,optC,optD,optE,i;        double media,pctA,pctB,pctC,pctD,pctE;        String op;                i=-1;        id=-1;        soma=0;        optA=0;        optB=0;        optC=0;        optD=0;        optE=0;        media=0;        pctA=0;        pctB=0;        pctC=0;        pctD=0;        pctE=0;        op=null;                while(id!=0){            System.out.println("Insira a idade");            id=entrada.nextInt();                        i++;            soma=soma+id;            do{                System.out.println("Insira a opinião");                op=entrada.next();                if (op.equalsIgnoreCase("A")){                    optA++;                }else if (op.equalsIgnoreCase("B")){                    optB++;                }else if (op.equalsIgnoreCase("C")){                    optC++;                }else if (op.equalsIgnoreCase("D")){                    optD++;                }else if (op.equalsIgnoreCase("E")){                    optD++;                }else{                    System.out.println("Escolha uma opinião válida");                }            } while((! op.equalsIgnoreCase("A")) && (! op.equalsIgnoreCase("B")) && (! op.equalsIgnoreCase("C")) && (! op.equalsIgnoreCase("D")) && (! op.equalsIgnoreCase("E")));                    }                if (i!=0){            media=soma/i;            pctA=(double)optA/i;            pctB=(double)optB/i;            pctC=(double)optC/i;            pctD=(double)optD/i;            pctE=(double)optE/i;        }        //esse trecho está fora do if, logo fica um "dente" para trás.        System.out.println("Quantidade de pessoas que responderam a pesquisa: "+i);        System.out.println("Média de idade das pessoas que responderam a pesquisa: "+media);        System.out.println("Porcentagem de opinião A: "+pctA);        System.out.println("Porcentagem de opinião B: "+pctB);        System.out.println("Porcentagem de opinião C: "+pctC);        System.out.println("Porcentagem de opinião D: "+pctD);        System.out.println("Porcentagem de opinião E: "+pctE);        entrada.close();    }}

No aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×