[problemas no for]Problemas com a logica de repetição / Resolvido!

9 respostas
F_ix1

Obrigado a todos que ajudaram! Problema resolvido.

import javax.swing.*;

public class Idades {

public static void main (String args[]) {
	int idade, qnt_m = 0, qnt_f = 0,qnt45 = 0;
	String sexo;

	sexo = JOptionPane.showInputDialog("Escreve seu sexo");
	idade = Integer.parseInt( JOptionPane.showInputDialog("Escreve sua idade"));
for() { //nao consigo fazer com oque o while rode tudo aqui se a idade for maior que 0

	if(sexo=="M") {
		qnt_m++;
		if(idade>=45) {
			qnt45++;
		}
	}
	if(sexo=="F") {
		qnt_f++;
	}
}

JOptionPane.showMessagerDialog(null, "A quantidade de homens é " + qnt_m + " acima de 45 são" + qnt45 + " ja, o numero de mulheres é" + qnt_f).

}
}

Como ta escrito no comentário ali em cima, eu to com dificuldades em como mandar o for so rodar o treco caso a idade for diferente de 0. mas realmente não to lembrando da logica. ja que não aceita comparações igual o if.

9 Respostas

Henio

Faz um if e coloca o loop dentro do if. Mas pelo teu código não sei se é isso que tu quer. Qual é o objetivo do teu código. Lógica envolve algoritmo, posta ae qual o objetivo pra ficar mais fácil ajudar.

F_ix1

Mas se eu fizer um IF e validar com idade acima de 0 ele só vai rodar uma vez né? O.o daria pra fazer um loop de N vezes com if? como seria moço.

Henio

Então, já editei meu post ali.
Precisaria saber mais sobre o que você quer fazer.

F_ix1

Henio:
Então, já editei meu post ali.
Precisaria saber mais sobre o que você quer fazer.

O objetivo como ta resumidamente descrito no comentario é!

caso a variavel idade for DIFERENTE DE 0. ele rode o programa. caso seja 0! não rode o programa e vá para a ultima linha 24.

idade 0 == mostre os resultado (vá para a linha 24)
idade diferente de 0 == continue perguntando!

Henio

Cara, se tu colocar um loop pra rodar simplesmente se o valor da variavel for maior que 0 o loop vai ser infinito.

Eu quero saber qual é o objetivo desse loop, do programa e tudo mais que for relevante.
Um loop começa sozinho tudo que ele precisa é de uma instrução que defina quantas vezes ele irá repetir, aí dentro do seu loop vc coloca a condição com um if.

Ex:

while (idade < 50) { if ( idade > 0) { ++idade //Só um exemplo, aqui você põe os códigos que você quer } else { break; } }

F_ix1

bom o codigo acima não resolveu, travou feio rsrs. o loop que estou falando não precisa de declaração de quantas vezes vai rodar (for), que se dentro de seu parâmetro. a variável SEXO for 0 (zero)! o loop vai ser interrompido. isso e a unica informação relevante no problema moço ja que se você analisar o código da primeira postagem percebera que tudo depende do for. e minha duvida esta la! como fazer a comparação certa no parâmetro do for para tal coisa.

o problema de usar um if é que so vai rodar uma vez, e de um while é que precisaria de um contador de controle oque no caso não seria possível ‘’/

Condição do loop: idade maior que 0;
Quantas vezes vai repetir: infinitas, des que idade maior que 0;

Henio

F?ix~*:
bom a string acima não resolveu, travou feio rsrs. o loop que estou falando não precisa de declaração de quantas vezes vai rodar (for), que se dentro de seu parâmetro. a variável SEXO for 0 (zero)! o loop vai ser interrompido. isso e a unica informação relevante no problema moço ja que se você analisar o código da primeira postagem percebera que tudo depende do for. e minha duvida esta la! como fazer a comparação certa no parâmetro do for para tal coisa.

o problema de usar um if é que so vai rodar uma vez, e de um while é que precisaria de um contador de controle oque no caso não seria possível ‘’/

Bom,tá difícil. Vc falou que queria um loop com que fizesse algo se a variável idade fosse maior que 0, agora você está me dizendo que se a variável SEXO for 0 o loop será interrompido.

Loops do tipo for também precisam de declaração sobre quantas vezes rodar, a diferença é que for tem uma expressão de inicialização e também de iteração.

É exercício isso? Tem como postar o enunciado?

EDIT:

Ultima tentativa, tenta isso aqui

While (idade != 0)
F_ix1

Henio:

Bom,tá difícil. Vc falou que queria um loop com que fizesse algo se a variável idade fosse maior que 0, agora você está me dizendo que se a variável SEXO for 0 o loop será interrompido.

na minha cabeça daria quase no mesmo essas 2 afirmações. pq e a unica instrução do programa

se for 0 vai pra linha 24
se não for 0 vai rodar tudo que estra dentro da estrutura

nesse caso não a diferença rsrs nas minhas “duas” afirmações.

o enunciado fala.

  1. Uma empresa decidiu fazer um levantamento em relação aos candidatos que se apresentarem para preenchimento de vagas no seu quadro de funcionários. Supondo que
    você seja o programador dessa empresa, faça um algoritmo que:
    Obtenha para cada candidato a idade e o sexo (F-Feminino, M-Masculino) para encerrar a
    entrada de dados digite zero para a idade.
    Calcule e mostre:
    a) o número de candidatos do sexo feminino;
    b) a quantidade de homens com mais de 45 anos;

@seu edit.

obrigado pela ajuda, ta meio tarde pra mim amanha vou dar uma lida no topico inteiro e quem sabe sem o sono pesado eu absorva as informações melhor. testarei o While (idade != 0) de novo amanha ja que veio uma enxurrada de erros rsrs.

Bocchi
F?ix~*:
import javax.swing.*;

public class Idades {

public static void main (String args[]) {
	int idade, qnt_m = 0, qnt_f = 0,qnt45 = 0;
	String sexo;
        
        for() { //nao consigo fazer com oque o while rode tudo aqui se a idade for maior que 0
	   sexo = JOptionPane.showInputDialog(&quot;Escreve seu sexo&quot;);
	   idade = Integer.parseInt( JOptionPane.showInputDialog(&quot;Escreve sua idade&quot;));
           
           if (idade>0) {
	        if(sexo==&quot;M&quot;) {
		   qnt_m++;
		   if(idade&gt;=45) {
			qnt45++;
		   }
	        }
        
	       if(sexo==&quot;F&quot;) {
		    qnt_f++;
	        }
          } else {
                 break                       // caso a idade seja menor que 0, interrompe o loop.
          }
}

JOptionPane.showMessagerDialog(null, &quot;A quantidade de homens é &quot; + qnt_m + &quot; acima de 45 são&quot; + qnt45 + &quot; ja, o numero de mulheres é&quot; + qnt_f).

}
}

Outra solução seria usando while.
public class Idades {

public static void main (String args[]) {
	int idade, qnt_m = 0, qnt_f = 0,qnt45 = 0;
	String sexo;
        boolean fim = false;

        while(!fim) { 
	   sexo = JOptionPane.showInputDialog(&quot;Escreve seu sexo&quot;);
	   idade = Integer.parseInt( JOptionPane.showInputDialog(&quot;Escreve sua idade&quot;));
           
           if (idade>0) {
	        if(sexo==&quot;M&quot;) {
		   qnt_m++;
		   if(idade&gt;=45) {
			qnt45++;
		   }
	        }
        
	       if(sexo==&quot;F&quot;) {
		    qnt_f++;
	        }
          } else {
                 fim = true;                     // caso a idade seja menor que 0, interrompe o loop.
          }
}

JOptionPane.showMessagerDialog(null, &quot;A quantidade de homens é &quot; + qnt_m + &quot; acima de 45 são&quot; + qnt45 + &quot; ja, o numero de mulheres é&quot; + qnt_f).

}
Criado 9 de outubro de 2011
Ultima resposta 9 de out. de 2011
Respostas 9
Participantes 3