Programinha besta... Dúvida cruel

19 respostas
Renato_Freitas

Desculpem pela minha dúvida já que é mais lógica de programação mesmo...
Más sou iniciante ainda.... :)
estou resolvendo alguns exercicíos de um apostila e me parei nesse...
preciso imprimir os números impares de 1 á 30 e somá-los...

class Exerc7
{
      public static void main(String[] args) {

		int count;
		int soma = 0;

		for(count = 1; count <= 30; count++) {
			if(count % 2 == 1) {
				soma += count;
				continue;
			}
			System.out.println("Contador: " + count + "  Soma dos Numeros Impares: " + soma);
		}
      }
}

bom ele imprimi a soma dos números impares, más o contador imprimi os números pares.
agora se eu mudo o meu if assim:

if(count % 2 == 0) {

ele imprimi o contador com os números impares e a soma dos números pares...

por favor alguém pode me dizer a cacada que estou fazendo...
o modo de achar números impares (count % 2 == 1) e os pares (count % 2 == 0) está certo néh...
por favor se alguém poder me explicar...

19 Respostas

nbluis

Tira o continue e coloca o System.out.println dentro do if.

Kassiane_Pretti
class Exerc7   
{   
      public static void main(String[] args) {   
  
        int count;   
        int soma = 0;   
  
        for(count = 1; count <= 30; count++) {   
            if(count % 2 != 0) {   
                soma += count;     
                System.out.println("Contador: " + count); //imprimirá os numeros impares somente

            }
            
        }  
            System.out.println("Soma dos Numeros Impares: " + soma);   //irá mostrar a soma dos numeros impares somente
          
      }   
}

Espero ter ajudado

peczenyj

Vc colocou um continue no seu if.

ex:

for(i-0;i<2;i++){

if(i==1) continue;

System.out.println(quando i for igual a 1 essa linha não sera executada pois o for avançou para a proxima etapa do laço);

}
davidbuzatto
Renato Freitas:
Desculpem pela minha dúvida já que é mais lógica de programação mesmo... Más sou iniciante ainda.... :) estou resolvendo alguns exercicíos de um apostila e me parei nesse... preciso imprimir os números impares de 1 á 30 e somá-los...
class Exerc7
{
      public static void main(String[] args) {

		int count;
		int soma = 0;

		for(count = 1; count <= 30; count++) {
			if(count % 2 == 1) {
				soma += count;
				continue;
			}
			System.out.println("Contador: " + count + "  Soma dos Numeros Impares: " + soma);
		}
      }
}

bom ele imprimi a soma dos números impares, más o contador imprimi os números pares.
agora se eu mudo o meu if assim:

if(count % 2 == 0) {

ele imprimi o contador com os números impares e a soma dos números pares...

por favor alguém pode me dizer a cacada que estou fazendo...
o modo de achar números impares (count % 2 == 1) e os pares (count % 2 == 0) está certo néh...
por favor se alguém poder me explicar...

A forma de ver se um inteiro é par ou impar é dessa forma sim.

Estão aparecendo os números pares pois você está usando o System.out.println fora do if e tbm está usando a instrução continue, que vai fazer com que o restante do loop não seja executado. Quando vc acha um impar, vc soma e dá continue, sendo assim, ele incrementa o contador e volta para o if. Se não passa no if (o contador vai ser par) ele imprime usando o System.out.println

Solução:
Tire o continue e coloque o System.out.println dentro do if.

Até mais!

J
Faca dessa maneira que vai fazer correto

              int soma = 0;
              for(int i=1;i<30;i+=2)  
                soma += i;

              System.out.println("Soma = "+soma);
Renato_Freitas

já erá mano deu certo…

havia colocado o continue por casa de um exemplo q vi em outro lugar…
acho q ñ entendi bem o uso dele então… vc poderia me esplicar???

nbluis

O continue faz ele ir direto para a próxima iteração do for(caso exista), sem passar pelo resto do bloco de código da iteração atual.

davidbuzatto

Como eu disse, o continue serve para você “parar” a interação atual do loop.
Quando o continue é encontrado, tudo que vem depois dele não é executado, fazendo com que o loop inicie a próxima iteração.

Se você quer quebrar o loop inteiro (parar ele) vc usa a instrução break.

Existem outras formas de se usar o continue e o break (usando labels), mas isso vc aprende depois :smiley:

Até mais!

Renato_Freitas

já erá mano deu certo…

havia colocado o continue por casa de um exemplo q vi em outro lugar…
acho q ñ entendi bem o uso dele então… vc poderia me esplicar???

qual a lógica do continue então… ele é muito uzado?

Renato_Freitas

valeu então pessoal…
muito obrigado pela ajuda de todos…
até mais :lol:

davidbuzatto

já erá mano deu certo…

havia colocado o continue por casa de um exemplo q vi em outro lugar…
acho q ñ entendi bem o uso dele então… vc poderia me esplicar???

qual a lógica do continue então… ele é muito uzado?

Um exemplo é uma situação onde não há necessidade de se executar o restante do corpo do loop.

Renato_Freitas

to embassando já neh :)

fiz alguns testes neste trecho do código e notei algumas diferenças..

soma += count;

quando somo ou subtraiu dá certo...

más quando eu multiplico ou divido assim o total deles dá sempre zero porque?????

soma *= count;
ou
soma /= count;
nbluis

Um teste de mesa resolve essa duvida.
Lembre-se que a variável soma começa com o valor 0;

Renato_Freitas

caramba é lógico como vou dividir ou multiplicar por zero néh foi mal…
vou fazendo os testes no código e ñ da certo ai fico caramba por que…
e o negoço tá bem na frente neh

valewww

Emersonsts

Nunca vi esse “continue” pra que serve?

davidbuzatto

Leia as respostas anteriores… Dê uma olhada no material de certificação que você está estudando, pois lá deve haver explicações sobre o assunto.

Até mais!

Emersonsts

Na verdade ainda nao estou estudando…
To esperando o livro chegar…

=]

Emersonsts

davidbuzatto:
Como eu disse, o continue serve para você “parar” a interação atual do loop.
Quando o continue é encontrado, tudo que vem depois dele não é executado, fazendo com que o loop inicie a próxima iteração.

Se você quer quebrar o loop inteiro (parar ele) vc usa a instrução break.

Existem outras formas de se usar o continue e o break (usando labels), mas isso vc aprende depois :smiley:

Até mais!

:oops:

Valeu…

hehehe

davidbuzatto

:wink:

Criado 1 de fevereiro de 2008
Ultima resposta 2 de fev. de 2008
Respostas 19
Participantes 7