Alguem me ajuda ? [RESOLVIDO]

27 respostas
S

Outro trabalho da facul galera ;]

  • a minha duvida eh o seguinte …

System.out.println("Digite o Canal:"); canal = Integer.parseInt(entrada.readLine()); while (canal =! 4 || canal =! 5 || canal =! 7 || canal =! 12){ System.out.println("Dados incorretos!!Digite novamente o Canal...");

olhem acima como eu faço pro while ter varias condiçoes ?? eu uso o ou com o simbolo || + nao vai …

Obrigado pela ajuda

27 Respostas

fabricioempresa

Não seria mais fácil usar um IF?

1

Não entra no while ou nao sai?

eu acho q ai vc vai precisar usar and :slight_smile:

S

tipo se eu deixar só o:

System.out.println("Digite o Canal:");
            canal = Integer.parseInt(entrada.readLine());
            while (canal =! 4){
                System.out.println("Dados incorretos!!Digite novamente o Canal...");
canal = Integer.parseInt(entrada.readLine());
            }

funciona, agora da outra formq eu esta la no inicio não .. é que eu preciso que os outros canais funcionem tbm .. + n da pra por + de 1 com ou no while.

fabricioempresa

pode fazer assim

System.out.println("Digite o Canal:"); canal = Integer.parseInt(entrada.readLine()); boolean o = false while (o == false) { if (canal =! 4 || canal =! 5 || canal =! 7 || canal =! 12) { o = false; System.out.println("Dados incorretos!!Digite novamente o Canal..."); } else { o = true; }

Não testei para ver se da certo

wbdsjunior

tente assim:

while (canal != 4 || canal != 5 || canal != 7 || canal != 12) {

o operador “=!” não existe.

Talius

Tenta usar as condições do While dentro de parenteses.

E outra, a comparação de diferente não é “!=” em vez de “=!” ?

System.out.println("Digite o Canal:"); canal = Integer.parseInt(entrada.readLine()); while ((canal != 4) || (canal != 5) || (canal != 7) || (canal != 12)){ System.out.println("Dados incorretos!!Digite novamente o Canal..."); }

Rafael_Marques1

sua ideia ta errada, mas o que tá realmente errado é isso:

while (canal != 4 || canal != 5 || canal != 7 || canal != 12);

no seu prog, se vc digitar o canal errado, vai entrar em um loop infinito falando que o canal está errado :wink:

S

Olhem o programa abaixo… o unico erro é o do WHILE
É um programa pra pessoa inserir o numero do canal que ta assistindo na casa … (ou 4, ou 5, ou 7, ou 12) e la embaixo calcula a porcentagem de casas que esta assitindo cada canal …

O que eu queria é que restringisse a pessoa a digitar só 4,5,7 ou 12 no inicio pq se a pessoa digitar qualquer numero passa … por isso coloquei o WHILE + to vendo que nao funciona … agora se eu deixo só uma coisa para ser verdade no while tipo o exemplo que dei acima passa … quando coloco + nao passa =s

import java.io.*;
   class pesquisacanal{

       public static void main(String args[]) {           BufferedReader entrada;
           entrada = new BufferedReader(new InputStreamReader(System.in));

           int contador,contadorC0 = 0, contadorC4 = 0, contadorC5 = 0, canal, contadorC7 = 0, contadorC12 = 0, pessoas, porcent4 = 0, porcent5 = 0, porcent7 = 0, porcent12 = 0, sair;

        System.out.println("-------------------------------------------------------------------");
        System.out.println("Pesquisa de Canais \n");
        System.out.println("-------------------------------------------------------------------\n\n");
        contador = 1;
        while (contador < 5000) {
               try {


             System.out.println("Digite o Canal:");
            canal = Integer.parseInt(entrada.readLine());
            while (canal != 4 || canal != 5 || canal != 7 || canal =! 12){
                System.out.println("Dados incorretos!!Digite novamente o Canal...");
canal = Integer.parseInt(entrada.readLine());
            }

             if (canal < 5 && canal > 3 ){
                 contadorC4 ++;
             }else{
                 if (canal >4 && canal < 6){
                  contadorC5 ++;
                 }else{
                     if (canal > 6 && canal < 8){
                  contadorC7 ++;
                 }else{
                     if (canal > 11 && canal < 13){
                  contadorC12 ++;
                 }else{
                     if (canal < 2 && canal > 1){
                  contadorC0 ++;
                 }else{

                     System.out.println("Dados incorretos!");
                  }
                 }
                 }
             }
             }


                System.out.println("Quantas pessoas estavam assistindo?");
              pessoas = Integer.parseInt(entrada.readLine());



   while (pessoas < 0 ) {
                System.out.println("Dados Incorretos!! Digite Novamente...");
              System.out.println("Quantas pessoas estavam assistindo?");
           pessoas = Integer.parseInt(entrada.readLine());
             System.out.println("--------------------------------------- \n");
           }

                   System.out.println("Deseja continuar? [1 - SIM /2 - NAO]");
                   sair = Integer.parseInt(entrada.readLine());

                   if(sair > 1 && sair < 2){
                       break;
                   }
             
       }catch (Exception e) {
                   System.out.println("----------------------------------------");
            }
 contador ++;

       }

                   System.out.println("-------------------------------------------------------------------");
                    porcent4 = (contadorC4 * 100) / contador;
                    porcent5 = (contadorC5 * 100) / contador;
                    porcent7 = (contadorC7 * 100) / contador;
                    porcent12 = (contadorC12 * 100) / contador;

            System.out.println("-------------------------------------------------------------------");
            System.out.println("Número de casas assistindo o canal 4 -->" + contadorC4 + "  --> e sua porcentagem:" + porcent4 );
            System.out.println("Número de casas assistindo o canal 5 -->" + contadorC5 + "  --> e sua porcentagem:" + porcent5 );
            System.out.println("Número de casas assistindo o canal 7 -->" + contadorC7 + "  --> e sua porcentagem:" + porcent7 );
            System.out.println("Número de casas assistindo o canal 12 -->" + contadorC12 + "  --> e sua porcentagem:" + porcent12);
            System.out.println("-------------------------------------------------------------------");
            System.out.println("Programa Encerrado ... ");
       }




   }
1

Cara troca o ou || por and && que funciona :smiley:

B

/kr não eh melhor vc fazer um menu com os canais disponiveis? jah que vc vai usar apenas alguns canais e em seguida trata a opção inforrmada…

S

Com o && nao funciona d ejeito nenhum … nem entra no while …

E po o professor nao eh usuario … ele vai tentar outros numeros pra ver se ta bem feito neh ;] ai ja viu neh HAUHAUHAUAH

só queria algo do tipo:

  • se o numero for diferente de 4 … a pessoa digita o canal novamente
  • se o numero for diferente de 5 … a pessoa digita o canal novamente
  • se o numero for diferente de 7 … a pessoa digita o canal novamente
  • se o numero for diferente de 12 … a pessoa digita o canal novamente
  • com o if eh foda eu quero algo que se repita … pq o professor testa umas 10 vz um numero errado de sacanagem ;]

valeu !

B

Não sei se funcionaria… Mas acho que pode se usado um vetor com os canais, na veificação voce pode apenas utilizar o veto…
ao contrario de usa a comparação para cada canal.

1

sbrito olhando seu while ele ta assim

while (canal != 4 || canal != 5 || canal != 7  || canal =! 12){

coloca AND e altera o ultimo sinal de diferente que esta errado

while (canal != 4 && canal != 5 && canal != 7  && canal != 12){

ai acho que funfa :slight_smile:

wbdsjunior

tente assim:

while (canal != 4 & canal != 5 & canal != 7 & canal != 12) {

quando você usa “&” você diz que a condição deve parar de ser verificada caso seja falsa.

S

eh eu havia reparado … obrigado pela ajuda …

  • num da nao … ele pede pra repetir os dados … com qualquer numero que vc coloca … ate se for um desses que estao no while =s
britotr

porque vc não usa entao o switch case, já que são apenas essas 4 opcoes… acho que seria uma boa para o caso

S

valeu manim + num funfa … hauhauha

nem com &, &&, ||, ou nem nada … nem fazendo macumba …

éeee + teria que alterar tudo … acho que vou fazer com if mesmo … eh simples + fazer oq eh o jeito brigadao ae

britotr
switch (canal){
                 
                 case 4 : contadorC4++;
                 break;
                 case 5 : contadorC5++;
                 break;
                 case 7: contadorC5++;
                 break;
                 case 12 : contadorC12++;
                 break;
                 default : System.out.println ("Dados incorretos!! Digite novamente o canal..");
             }

tente assim.. mais facil

S

britotr

VALEU !!! vou deixar com o seu switch mesmo … é melhor do que deixar sem … pelo menos se ele errar uma vez tem opoção de entrar com o numero de novo ^^

brigadao ae … abraços

1
soh complementando.. essa parte do codigo
System.out.println("Digite o Canal:");  
             canal = Integer.parseInt(entrada.readLine());  
             while (canal != 4 || canal != 5 || canal != 7 || canal =! 12){  
                 System.out.println("Dados incorretos!!Digite novamente o Canal...");  
 canal = Integer.parseInt(entrada.readLine());  
             }  
   
              if (canal < 5 && canal > 3 ){  
                  contadorC4 ++;  
              }else{  
                  if (canal >4 && canal < 6){  
                   contadorC5 ++;  
                  }else{  
                      if (canal > 6 && canal < 8){  
                   contadorC7 ++;  
                  }else{  
                      if (canal > 11 && canal < 13){  
                   contadorC12 ++;  
                  }else{  
                      if (canal < 2 && canal > 1){  
                   contadorC0 ++;  
                  }else{  
   
                      System.out.println("Dados incorretos!");  
                   }  
                  }  
                  }  
              }  
              }
podia ser assim :idea:
System.out.println("Digite o Canal:");
   canal = Integer.parseInt(entrada.readLine());
   boolean aux = false;
   while (!aux){
      switch(canal) {
         case 4:
            contadorC4++;
            aux = true;
            break;
         case 5:
            contadorC5++;
            aux = true;
            break;
         case 7:
            contadorC7++;
            aux = true;
            break;
         case 12:
            contadorC12++;
            aux = true;
            break;
         default:
            System.out.println("Dados incorretos!!Digite novamente o Canal...");
            canal = Integer.parseInt(entrada.readLine());
      }
   }
B

Com switch fica mais facil mesmo…

S

1 de abril …

ficou perfeito !! era isso que eu queria … BRIGADAO a todos !!!

C

Oi boa tarde!
Estou começando a aprender java e gostaria de saber se alguem pode me ajudar a fazer esses exercicios para amanha, pelo menos alguns deles.
Obrigado!

  1. Faça um programa em Java que leia dois números inteiros quaisquer, calcule a soma do
    módulo desses números. Pode-se pedir também o módulo da soma.
  2. Faça um programa em Java que leia três números inteiros representando os lados de um
    triângulo e diga se o triângulo é eqüilátero, isósceles ou escaleno.
  3. Faça um programa em Java que leia o peso e a altura de 20 pessoas e diga quantas estão
    abaixo do peso. IMC = peso/altura2 IMC <=18,5
  4. Faça um programa em Java que leia 10 números e diga qual é o maior.
  5. Faça um programa em Java que leia o peso de 50 bois e diga quantos estão entre 600 e 800
    kg.
  6. Faça um programa em Java que leia as médias dos alunos de uma turma até que seja
    digitado -1 e diga quantos passaram, e quantos estão em final.
  7. A cidade A possui 90.000 habitantes e a cidade B 50.000. A população da cidade A cresce
    0,9 % ao ano enquanto que a da cidade B cresce 1,5% ao ano. Faça um programa em Java
    que calcule quantos anos são necessários para que a cidade B tenha mais habitantes que
    a cidade A.
  8. Faça um programa em Java que leia as notas dos alunos de 5 turmas, sendo que cada turma
    tem 25 alunos, e escreva qual a maior nota de cada turma e qual a média de todas as
    turmas.
  9. Faça um programa em Java que leia um número X, calcule e escreva o valor de Y dado por:
    X<3 -> Y=X+1
    3 <= X < 10 -> Y=X/2+4
    X >= 10 -> Y = 2X
  10. Faça um programa em Java que leia a altura e o peso de uma pessoa e diga se ela está
    abaixo do peso, com peso normal ou acima do peso. IMC = peso / altura2
    IMC < 18,5 - Abaixo
    IMC <= 25,0 - Normal
    IMC > 25,0 - Acima
  11. Faça um programa em Java que leia um número N e a seguir N números e escreva a sua
    soma.
  12. Faça um programa em Java que leia um número N e escreva uma lista do seus divisores.
  13. Faça um programa em Java que leia um número N calcule e escreva a seguinte soma com N
    termos: S = 1/10 + 2/15 + 3/20 + 4/25 + …
  14. Faça um programa em Java que leia um número N e calcule e escreva o n-ézimo termo da
    série: 1, 2, 4, 7, 11, …
  15. Faça um programa em Java que leia um número e calcule e escreva o seu Fatorial.
  16. Faça um programa em Java que leia dois números M e N e escreva todos os inteiros entre
    eles.
  17. Faça um programa em Java que leia números, até que seja digitado -1 e calcule a media
    desses números.
  18. Faça um programa em Java que leia o gênero (0 para masculino ou 1 para feminino) e a cor
    dos cabelos (0 para louro, 1 para preto, 2 para ruivo ou 3 para castanho) de 100 pessoas e
    diga quantas ruivas existem.
  19. Faça um programa em Java que leia um número n calcule e escreva a soma dos n primeiros
    termos da série:
    S = 1! + 2! + 3! + 4! + 5! + …
S

Vc tem que tentar se esforçar … ai posta o seu codigo aki que eles te ajudam … assim como me ajudaram a poouco tempo atras ;]

se tu parar pra fazer legal … da pra tu fazer metade ou até tudo hoje!!

1

isso msm… tenta fazer e posta o codigo com as duvidas
senao se for esperar alguem fazer pra vc acho q vai ficar esperando ate amanha

CaduRJ
sbrito:
Outro trabalho da facul galera ;] + a minha duvida eh o seguinte ..
System.out.println("Digite o Canal:");
            canal = Integer.parseInt(entrada.readLine());
            while (canal =! 4 || canal =! 5 || canal =! 7 || canal =! 12){
                System.out.println("Dados incorretos!!Digite novamente o Canal...");

olhem acima como eu faço pro while ter varias condiçoes ?? eu uso o ou com o simbolo || + nao vai ..

Obrigado pela ajuda

Olá, primeiro vou explicar como funciona a condição WHILE: while (canal != 4 || canal != 5 || canal != 7 || canal != 12)
'ou' = OR = || ==> Basta que um termo da condição seja TRUE para entrar no laço.
'e' = AND = && ==> TODOS os termos da condição devem ser TRUE para entrar no laço.
Neste caso basta que um termo seje TRUE que vai entrar no laço.
1º termo: canal != 4 - traduzindo: canal é diferente de 4? se isso for verdadeiro vai entrar no laço.
ex. se eu digitar 4 o 1º termo do laço é falso porém no 2º termo já será TRUE e vai entrar no laço.
ex. se eu digitar 5 o 1º termo do laço é TRUE e já vai entrar no laço.

Tendo dito isto mudei um pouco seu código (uma breve olhada e vc já entende o que eu mudei):
import java.io.BufferedReader;
import java.io.InputStreamReader;

class pesquisacanal {

	public static void main(String args[]) {
		BufferedReader entrada;
		entrada = new BufferedReader(new InputStreamReader(System.in));

		int contador, contadorC0 = 0, contadorC4 = 0, contadorC5 = 0, canal, contadorC7 = 0, contadorC12 = 0, pessoas, porcent4 = 0, porcent5 = 0, porcent7 = 0, porcent12 = 0, sair;

		System.out.println("-------------------------------------------------------------------");
		System.out.println("Pesquisa de Canais");
		System.out.println("-------------------------------------------------------------------\n");
		contador = 1;
		while (contador < 5000) {
			try {

				System.out.print("Digite o Canal: ");

				do {
					canal = Integer.parseInt(entrada.readLine());

					System.out.println();
					if(canal == 4 || canal == 5 || canal == 7 || canal == 12){break;}
					
					System.out.print("Dados incorretos!! Digite novamente o Canal: ");

				} while (true);

				switch (canal) {
				
				case 4: contadorC4++; break;

				case 5: contadorC5++; break;

				case 7: contadorC7++; break;

				case 12: contadorC12++;	break;

				default:
					System.out.println("Dados incorretos!");
					break;
				}

				System.out.print("Quantas pessoas estavam assistindo? : ");
	
				pessoas = Integer.parseInt(entrada.readLine());
				
				while (pessoas < 0) {
					System.out.println("Dados Incorretos!! Digite Novamente...");
					System.out.print("Quantas pessoas estavam assistindo? : ");
					pessoas = Integer.parseInt(entrada.readLine());
					System.out.print("--------------------------------------- \n");
				}

				System.out.print("Deseja continuar? [1 - SIM /2 - NAO]: ");
				sair = Integer.parseInt(entrada.readLine());				

				if (sair > 1 && sair < 3) {break;}

			} catch (Exception e) {
				System.out.println("----------------------------------------");
			}
			contador++;

		}

		System.out.println("-------------------------------------------------------------------");
		porcent4 = (contadorC4 * 100) / contador;
		porcent5 = (contadorC5 * 100) / contador;
		porcent7 = (contadorC7 * 100) / contador;
		porcent12 = (contadorC12 * 100) / contador;

		System.out.println("-------------------------------------------------------------------");
		System.out.println("Número de casas assistindo o canal 4 -->"
				+ contadorC4 + "  --> e sua porcentagem:" + porcent4);
		System.out.println("Número de casas assistindo o canal 5 -->"
				+ contadorC5 + "  --> e sua porcentagem:" + porcent5);
		System.out.println("Número de casas assistindo o canal 7 -->"
				+ contadorC7 + "  --> e sua porcentagem:" + porcent7);
		System.out.println("Número de casas assistindo o canal 12 -->"
				+ contadorC12 + "  --> e sua porcentagem:" + porcent12);
		System.out.println("-------------------------------------------------------------------");
		System.out.println("Programa Encerrado ... ");
	}
}

Considerações:
Quando vc tem um número grande de opções difetentes de INT use switch case ao invés de IFs aninhados, é mais rápido.
E se eu digitar uma letra o que acontece? Por isso faça sempre tratamento da entrada de dados.

Espero que tenha ajudado.

S

CaduRJ - po cara … entendi perfeitamente oq vc disse … realmente estava todo errado ao fazer while com ‘ou’, se eu digitasse 4 realmente ele passa no primeiro + no segundo ele cai ai puff loop infinito … qualquer numero cairia nesse loop.

Brigadao mesmo …

Em relação a tratamento dos dados … é isso que o professor vem falando … + eh foda ele n passa exemplo … nao passa nada para que eu possa aprender =s
Tem algum livro ? algum site que explique isso … eu fiz isso do while pq ele pediu esse exercicio e mais uma penca junto e semana que vem tem q entregar … + eu sei que ele vai testar … vai testar com letra … vai testar com varios numeros pra ver se ta tudo certinho … eu queria fazer esses programinhas bem feitos + acontece que nao tenho conhecimento suficiente ainda ;]

  • valeu pela ajuda … abriu a minha mente … tava puto com essa porra desse while e pra mim ele que estava errado …
    PS: vou testar aki o codigo q vc passou com as alterações brigadao !!!
Criado 8 de abril de 2010
Ultima resposta 9 de abr. de 2010
Respostas 27
Participantes 10