Duvida Exercicio de Perguntas

10 respostas
L

Galera,

Venho mais uma vez recorrer aos mestres do java e tirar duvidas.

Necessito de fazer o seguinte exercicio:

Criar um programa para ser utilizado em uma enquete. A pesquisa tera 10 perguntas e as possiveis respostas para cada uma são:
S- SIM
N- NÃO
X- NAO QUERO OPINAR

As perguntas devem ser armazenadas e as respostas em uma matriz de caractres (char). O numero de pessoas que participarão da pesquisa é desconhecido. Deseja-se conhecer ao final:

A) A pergunta que um maior numero de pessoas nao quiseram opinar.
B) Numero de pessoas que participaram da pesquisa.
C) Uma tabela contendo todas as perguntas e o numero de pessoas que responderam SIM e Não para cada uma.

Segue meu codigo:

public class Exercicio13 {

	   public Exercicio1() {
	   }

	   public static void main(String[] args) {

	               String[] vPergunta = {"Pergunta 1",
	                                                         "Pergunta 2",
	                                                         "Pergunta 3",
	                                                         "Pergunta 4",
	                                                         "Pergunta 5",
	                                                         "Pergunta 6",
	                                                         "Pergunta 7",
	                                                         "Pergunta 8",
	                                                         "Pergunta 9",
	                                                         "Pergunta 10"};
	               //char mResposta = {{'x',,},{,'x',},{'x',,},{,,'x'},{'x',,},{,'x',},{,,'x'},{,'x',},{,,'x'},{'x',,}};
	               char[][] mResposta = new char[10][3];

	       int cont, lin, col;

	               // Adiciona as
	               for(cont=0; cont < vPergunta.length; cont++)
	               {
	                       for(lin = 0; lin < mResposta.length; lin++)
	                       {
	                               for(col = 0; col < mResposta[lin].length; col++)
	                               {
	                                       if((mResposta[lin][col] ! = null))
	                                       {
	                                               mResposta[lin][col] = 'S';
	                                       }
	                                       if((mResposta[lin][col] != null) && (mResposta[lin][col] == 'N') )
	                                       {
	                                               mResposta[lin][col] = 'N';
	                                       }
	                                       if((mResposta[lin][col] != null) && (mResposta[lin][col] == 'X') )
	                                       {
	                                               mResposta[lin][col] = 'X';
	                                       }
	                               }
	                       }
	               }
	       }
	}

10 Respostas

Andre_Rosa

Sim, e qual é a dúvida?

L

André,

Meu raciocinio está certo???
Essa é a dúvida!!!

JMARQ

Leonardo Augusto não verifiquei o código em si, apenas observei a questão, então quero deixar uma dica, para que você possa controlar a quantidade de respostas de cada pergunta deverá colocar contadores para cada tipo de resposta e para controlar a quantidade de pessoas que responderam o questionário, lógico use um contador para o mesmo e um laço

do{
//implemente aqui o seu código
}while(instrução...);

E por ai vai.
Espero ter ajudado.
Até mais.

L

O algoritmo trava quando vai entrar no while e nada faz

import java.awt.event.InputEvent;
import java.util.Scanner;
public class Exercicio13 {
	   
	        public static void main(String[] args) { 
	            Scanner ler = new Scanner(System.in); 
	             
	            //suponha que sua matriz tenha apenas capacidade para duas perguntas 
	            String vPergunta[] = {"Pergunta 1","Pergunta 2","Pergunta 3", "Pergunta 4", "Pergunta 5", "Pergunta 6", "Pergunta 7", "Pergunta 8", "Pergunta 9", "Pergunta 10"};
	            int totalPessoas=0, contSim=0, contNao=0, contX=0, totalSim=0, totalNao =0;          
	           
	            //matriz que armazenará o gabarito 
	            char mResposta[][] = new char[10][3]; 
	        
	            System.out.println("Digite 'Continuar' para começar: ");
	            System.out.println("Digite 'Sair' para sair: ");
	            String op = ler.next(); 
	                while(op.equals("Continuar")){
	                    
	                for(int i=0;i<vPergunta.length;i++){ 
	                		System.out.println(vPergunta[i]);
	                    //imprimo a primeira pergunta (posicao i) juntamente com as alternativas (posição j) 
	                    for(int j=0;j<mResposta.length;j++){ 
	                    for(int k=0;j<k;k++){ 
	                   
	                       /*if(resp == "s")
	                        {                        
	                        mResposta[j][k] = 's';
	                        contSim++;
	                        } 
	                        if(resp == "n")
	                        {
	                        mResposta[j][k+1] = 'n';
	                        contNao++;
	                        } 
	                        if(resp == "x")
	                        {
	                        mResposta[j][k+2] = 'x';
	                        contX++;
	                        } */
	                    }
	                    totalPessoas++;
	                    } 
	                }
	                
	                // 
	                for(int i=0;i<vPergunta.length;i++){  
	                /*System.out.println(vPergunta[i] + "\t" + resp + "\n");
	                    for(int j=0;j<mResposta.length;j++){ 
	                    for(int k=0;j<k;k++){ 
	                   
	                        if(resp == "s")
	                        {
	                        contSim++;
	                        } 
	                        if(resp == "n")
	                        {                        
	                        contNao++;
	                        }                        
	                    }*/
	                    totalNao += contNao;
	                    totalSim += contSim;                    
	                    } 
	                    
	                }
	                
	                System.out.println("Total de pessoas que responderam Sim = " + totalSim);
	                System.out.println("Total de pessoas que responderam Nao = " + totalNao);
	                System.out.println("Total de pessoas que responderam = " + totalPessoas);
	                
	            
	            if(op.equals("Sair"))
	            { 
	            System.exit(0);
	            }
	           
	        }
	}
Lucas_Abbatepaolo
while(op.equals("Continuar")){  
                           
                     for(int i=0;i&lt;vPergunta.length;i++){   
                             System.out.println(vPergunta[i]);  
                         //imprimo a primeira pergunta (posicao i) juntamente com as alternativas (posição j)   
                         for(int j=0;j&lt;mResposta.length;j++){   
                         for(int k=0;j&lt;k;k++){   
                          
                            /*if(resp == "s") 
                             {                         
                             mResposta[j][k] = 's'; 
                             contSim++; 
                             }  
                             if(resp == "n") 
                             { 
                             mResposta[j][k+1] = 'n'; 
                             contNao++; 
                             }  
                             if(resp == "x") 
                             { 
                             mResposta[j][k+2] = 'x'; 
                             contX++; 
                             } */  
                         }  
                         totalPessoas++;  
                         }   
                     }

Isto não vai entrar em loop infinito???Em que momento vc altera a variavel op e o loop termina??>

L

Desculpa cara mandei o algoritmo numa versao errada

import java.awt.event.InputEvent;
import java.util.Scanner;

public class Exercicio13{
   
        public static void main(String[] args) { 
            Scanner ler = new Scanner(System.in); 
             
            //suponha que sua matriz tenha apenas capacidade para duas perguntas 
            String vPergunta[] = {"Pergunta 1","Pergunta 2","Pergunta 3", "Pergunta 4", "Pergunta 5", "Pergunta 6", "Pergunta 7", "Pergunta 8", "Pergunta 9", "Pergunta 10"};
            int totalPessoas=0, contSim=0, contNao=0, contX=0, totalSim=0, totalNao =0;          
           
            //matriz que armazenará o gabarito 
            char mResposta[][] = new char[10][3]; 
        
            System.out.println("Digite 'Continuar' para começar: ");
            System.out.println("Digite 'Sair' para sair: ");
            String op = ler.next(); 
            String resp = ler.next();
            while(op.equals("Continuar")){
                    
                for(int i=0;i<vPergunta.length;i++){ 
                    
                    for(int j=0;j<mResposta.length;j++){ 
                    for(int k=0;j<k;k++){ 
                   
                        if(resp == "s")
                        {                        
                        mResposta[j][k] = 's';
                        contSim++;
                        } 
                        if(resp == "n")
                        {
                        mResposta[j][k+1] = 'n';
                        contNao++;
                        } 
                        if(resp == "x")
                        {
                        mResposta[j][k+2] = 'x';
                        contX++;
                        } 
                    }
                    totalPessoas++;
                    } 
                }
                
                // 
                for(int i=0;i<vPergunta.length;i++){  
                System.out.println(vPergunta[i] + "\t" + resp + "\n");
                    for(int j=0;j<mResposta.length;j++){ 
                    for(int k=0;j<k;k++){ 
                   
                        if(resp == "s")
                        {
                        contSim++;
                        } 
                        if(resp == "n")
                        {                        
                        contNao++;
                        }                        
                    }
                    totalNao += contNao;
                    totalSim += contSim;                    
                    } 
                    
                }
                
                System.out.println("Total de pessoas que responderam Sim = " + totalSim);
                System.out.println("Total de pessoas que responderam Nao = " + totalNao);
                System.out.println("Total de pessoas que responderam = " + totalPessoas);
                
            }
            if(op.equals("Sair"))
            { 
            System.exit(0);
            }
           
        }
}

Sorry!!

JMARQ

Testa com um do{ }while();

import java.awt.event.InputEvent;   
import java.util.Scanner;   
  
public class Exercicio13{   
     
        public static void main(String[] args) {   
            Scanner ler = new Scanner(System.in);   
               
            //suponha que sua matriz tenha apenas capacidade para duas perguntas   
            String vPergunta[] = {"Pergunta 1","Pergunta 2","Pergunta 3", "Pergunta 4", "Pergunta 5", "Pergunta 6", "Pergunta 7", "Pergunta 8", "Pergunta 9", "Pergunta 10"};   
            int totalPessoas=0, contSim=0, contNao=0, contX=0, totalSim=0, totalNao =0;             
             
            //matriz que armazenará o gabarito   
            char mResposta[][] = new char[10][3]; 
            
            do{   //Com o do while é executado ao menos uma vez, pois caso a resposta não seja 'continuar' ele sai do laço
                       
                for(int i=0;i<vPergunta.length;i++){   
                       
                    for(int j=0;j<mResposta.length;j++){   
                    for(int k=0;j<k;k++){   
                     
                        if(resp == "s")   
                        {                           
                        mResposta[j][k] = 's';   
                        contSim++;   
                        }   
                        if(resp == "n")   
                        {   
                        mResposta[j][k+1] = 'n';   
                        contNao++;   
                        }   
                        if(resp == "x")   
                        {   
                        mResposta[j][k+2] = 'x';   
                        contX++;   
                        }   
                    }   
                    totalPessoas++;   
                    }   
                }   
                   
                //   
                for(int i=0;i<vPergunta.length;i++){     
                System.out.println(vPergunta[i] + "\t" + resp + "\n");   
                    for(int j=0;j<mResposta.length;j++){   
                    for(int k=0;j<k;k++){   
                     
                        if(resp == "s")   
                        {   
                        contSim++;   
                        }   
                        if(resp == "n")   
                        {                           
                        contNao++;   
                        }                           
                    }   
                    totalNao += contNao;   
                    totalSim += contSim;                       
                    } 
                    } 
	System.out.println("Deseja continuar respondendo (0-Sim / 1-Não)");
                 int op = ler.next();   						
                      
                }while(op != 1);//Modificado
                   
                System.out.println("Total de pessoas que responderam Sim = " + totalSim);   
                System.out.println("Total de pessoas que responderam Nao = " + totalNao);   
                System.out.println("Total de pessoas que responderam = " + totalPessoas);   
             
        }   
}

Fiz algumas alterações, veja se funciona.
Qualquer coisa estarei por aqui.
Valeu!!!

L

JMARQ:
Testa com um do{ }while();

import java.awt.event.InputEvent;   
import java.util.Scanner;   
  
public class Exercicio13{   
     
        public static void main(String[] args) {   
            Scanner ler = new Scanner(System.in);   
               
            //suponha que sua matriz tenha apenas capacidade para duas perguntas   
            String vPergunta[] = {"Pergunta 1","Pergunta 2","Pergunta 3", "Pergunta 4", "Pergunta 5", "Pergunta 6", "Pergunta 7", "Pergunta 8", "Pergunta 9", "Pergunta 10"};   
            int totalPessoas=0, contSim=0, contNao=0, contX=0, totalSim=0, totalNao =0;             
             
            //matriz que armazenará o gabarito   
            char mResposta[][] = new char[10][3]; 
            
            do{   //Com o do while é executado ao menos uma vez, pois caso a resposta não seja 'continuar' ele sai do laço
                       
                for(int i=0;i<vPergunta.length;i++){   
                       
                    for(int j=0;j<mResposta.length;j++){   
                    for(int k=0;j<k;k++){   
                     
                        if(resp == "s")   
                        {                           
                        mResposta[j][k] = 's';   
                        contSim++;   
                        }   
                        if(resp == "n")   
                        {   
                        mResposta[j][k+1] = 'n';   
                        contNao++;   
                        }   
                        if(resp == "x")   
                        {   
                        mResposta[j][k+2] = 'x';   
                        contX++;   
                        }   
                    }   
                    totalPessoas++;   
                    }   
                }   
                   
                //   
                for(int i=0;i<vPergunta.length;i++){     
                System.out.println(vPergunta[i] + "\t" + resp + "\n");   
                    for(int j=0;j<mResposta.length;j++){   
                    for(int k=0;j<k;k++){   
                     
                        if(resp == "s")   
                        {   
                        contSim++;   
                        }   
                        if(resp == "n")   
                        {                           
                        contNao++;   
                        }                           
                    }   
                    totalNao += contNao;   
                    totalSim += contSim;                       
                    } 
                    } 
	System.out.println("Deseja continuar respondendo (0-Sim / 1-Não)");
                 int op = ler.next();   						
                      
                }while(op != 1);//Modificado
                   
                System.out.println("Total de pessoas que responderam Sim = " + totalSim);   
                System.out.println("Total de pessoas que responderam Nao = " + totalNao);   
                System.out.println("Total de pessoas que responderam = " + totalPessoas);   
             
        }   
}

Fiz algumas alterações, veja se funciona.
Qualquer coisa estarei por aqui.
Valeu!!!

Creio que vai dar um erro na variavel op, ja q a mesma é uma String e não sera convertida para inteiro.
Estou errado?

Lucas_Abbatepaolo
while(op.equals("Continuar")){  
                       
                 for(int i=0;i&lt;vPergunta.length;i++){   
                       
                     for(int j=0;j&lt;mResposta.length;j++){   
                     for(int k=0;j&lt;k;k++){   
                      
                         if(resp == "s")  
                         {                          
                         mResposta[j][k] = 's';  
                         contSim++;  
                         }   
                         if(resp == "n")  
                         {  
                         mResposta[j][k+1] = 'n';  
                         contNao++;  
                         }   
                         if(resp == "x")  
                         {  
                         mResposta[j][k+2] = 'x';  
                         contX++;  
                         }   
                     }  
                     totalPessoas++;  
                     }   
                 }  
                   
                 //   
                 for(int i=0;i&lt;vPergunta.length;i++){    
                 System.out.println(vPergunta[i] + "\t" + resp + "\n");  
                     for(int j=0;j&lt;mResposta.length;j++){   
                     for(int k=0;j&lt;k;k++){   
                      
                         if(resp == "s")  
                         {  
                         contSim++;  
                         }   
                         if(resp == "n")  
                         {                          
                         contNao++;  
                         }                          
                     }  
                     totalNao += contNao;  
                     totalSim += contSim;                      
                     }   
                       
                 }  
                   
                 System.out.println("Total de pessoas que responderam Sim = " + totalSim);  
                 System.out.println("Total de pessoas que responderam Nao = " + totalNao);  
                 System.out.println("Total de pessoas que responderam = " + totalPessoas);  
                   
             }  
             if(op.equals("Sair"))  
             {   
             System.exit(0);  
             }  
              
         }

Acho q estou ficando maluco mais ainda não vi vc alterando o valor da variavel op para q o seu loop seja interrompido

tente assim:

import java.awt.event.InputEvent;  
   import java.util.Scanner;  
     
   public class Exercicio13{  
        
           public static void main(String[] args) {   
               Scanner ler = new Scanner(System.in);   
                  
               //suponha que sua matriz tenha apenas capacidade para duas perguntas   
               String vPergunta[] = {"Pergunta 1","Pergunta 2","Pergunta 3", "Pergunta 4", "Pergunta 5", "Pergunta 6", "Pergunta 7", "Pergunta 8", "Pergunta 9", "Pergunta 10"};  
               int totalPessoas=0, contSim=0, contNao=0, contX=0, totalSim=0, totalNao =0;            
                
               //matriz que armazenará o gabarito   
               char mResposta[][] = new char[10][3];   
             
               System.out.println("Digite 'Continuar' para começar: ");  
               System.out.println("Digite 'Sair' para sair: ");  
               String op = ler.next();   
               String resp = ler.next();  
               while(op.equals("Continuar")){  
                         
                   for(int i=0;i&lt;vPergunta.length;i++){   
                         
                       for(int j=0;j&lt;mResposta.length;j++){   
                       for(int k=0;j&lt;k;k++){   
                        
                           if(resp == "s")  
                           {                          
                           mResposta[j][k] = 's';  
                           contSim++;  
                           }   
                           if(resp == "n")  
                           {  
                           mResposta[j][k+1] = 'n';  
                           contNao++;  
                           }   
                           if(resp == "x")  
                           {  
                           mResposta[j][k+2] = 'x';  
                           contX++;  
                           }   
                       }  
                       totalPessoas++;  
                       }   
                   }  
                     
                   //   
                   for(int i=0;i&lt;vPergunta.length;i++){    
                   System.out.println(vPergunta[i] + "\t" + resp + "\n");  
                       for(int j=0;j&lt;mResposta.length;j++){   
                       for(int k=0;j&lt;k;k++){   
                        
                           if(resp == "s")  
                           {  
                              contSim++;  
                            }   
                            if(resp == "n")  
                           {                          
                             contNao++;  
                            }                          
                       }  
                       totalNao += contNao;  
                       totalSim += contSim;                      
                       }   
                         
                   }  
                     
                   System.out.println("Total de pessoas que responderam Sim = " + totalSim);  
                   System.out.println("Total de pessoas que responderam Nao = " + totalNao);  
                   System.out.println("Total de pessoas que responderam = " + totalPessoas);  
                     
               }  
               String op = ler.next(); //coloquei esta linha
               if(op.equals("Sair"))  
               {   
               System.exit(0);  
               }  
                
           }  
   }

Eu nao testei seu codigo so coloquei 1 linha a mais para vc receber a opção.

O seu codigo chega a entrar no while??>

L

Fiz de uma outra forma

Segue abaixo:

import java.awt.event.InputEvent;     
import java.util.Scanner;     
        
    public class Exercicio13{     
           
    	public static void main(String[] args) {  
	        Scanner ler = new Scanner(System.in);  
	          
	        //suponha que sua matriz tenha apenas capacidade para duas perguntas  
	        String [] respPergunta = new String[10];
	        String[] qPerguntas= new String[10];
	        int contS=0, contN=0, contX=0;
	        int contEntrevistados=0;
	        //adiociono a pergunta numero 1 juntamente com as alternativas  
	        qPerguntas[0]="Você fuma?";  
	        qPerguntas[1]="Você acessa a internet todos os dias?" ;
	        qPerguntas[2]= "Você lê muitos livros?";
	        qPerguntas[3]= "Você bebe?";
	        qPerguntas[4]= "Você tem smartphone?";
	        qPerguntas[5]= "Você tem notebook?";
	        qPerguntas[6]= "Você conhece ja frequentou faculdade?";
	        qPerguntas[7]= "Você trocaria um smartphone por um tablet?";
	        qPerguntas[8]= "Você frequenta salas de bate papo?";
	        qPerguntas[9]= "Você acessa internet todos os dias?";
	        System.out.println("Para responder o Questionario (S-Sim / N-Não / X- não quero opinar)");
	        System.out.println("Digite 'continuar' para começar: ");    
	        System.out.println("Digite 'Sair' para sair: ");    
	        String op = ler.next(); 
	        
	        while (op.equals("continuar")){
	        	 	
	        	for(int linha=0;linha<9;linha++){  
		            System.out.println(qPerguntas[linha]); 
		            String resp=ler.next();
		            respPergunta[linha]= resp;
		            
	        	}
	        	 for(int linha =0; linha <9; linha++){
	        		 
	        		 if(respPergunta[linha].equals("S")){
	        			 contS++;
	        		 }
	        		 if(respPergunta[linha].equals("N")){
	        			 contN++;
	        		 }
	        		 if(respPergunta[linha].equals("X")){
	        			 contX++;
	        		 }
	        	 }
	                
	                		
	                		
	                	}
	                }
		             
	                System.out.println("Digite 'Sair' para sair e ver a nota: ");
		            System.out.println("Digite 'continuar' para começar outra vez: ");
		            op = ler.next();
		            contEntrevistados++;
	        	
	            
	        }
	        System.out.println("O numero de entrevistados foi de: "+contEntrevistados);
	         
	        
	    }
}

[b]Existe alguma forma de eu jogar isso numa matriz[10][3]

Perguntas | Sim | Não | X
| | |
Porque ae fica facil de eu ver qual a pergunta q maior numero de pessoas nao quiseram opinar e de quebra ja imprimo todas as perguntas e o numero de pessoas q responderam sim e nao para cada uma.

Alguem pode me auxiliar?[/b]

Criado 20 de novembro de 2011
Ultima resposta 21 de nov. de 2011
Respostas 10
Participantes 4