Problemas com while

Tenho um exércicio para fazer usando while, fiz ele só que me perco na hora de fazer o calculo…


Ana tem 1,5 metros e cresce 2 cm por ano, enquanto Zé tem 1,1 metros e cresce 3 centímetros por ano. Construa um programa que calcule e mostre quantos anos serão necessários para que Zé seja maior que Ana.

O programa que eu fiz é esse,mais acho que meu erro começa com o conteudo dentro do While…


import javax.swing.*;

public class Altura {
        
    
    public static void main(String[] args) {
        String nome_homem,nome_mulher;
        double altura_homem,altura_mulher;
        int anos_necessarios,anos=0,homem_cresce=3,mulher_cresce=2;
        
        nome_homem=JOptionPane.showInputDialog("Digite o nome do homem");
        altura_homem=Double.parseDouble(JOptionPane.showInputDialog("Digite a altura do homem"));
        
        nome_mulher=JOptionPane.showInputDialog("Digite o nome do mulher");
        altura_mulher=Double.parseDouble(JOptionPane.showInputDialog("Digite a altura do mulher"));
        
        while (altura_homem>altura_mulher){
        
        	
        	 anos=Integer.parseInt(JOptionPane.showInputDialog("Digite o ano"));
        	 
        
        	 
        	 
        	 
        }
        
       System.out.println ("os anos necessarios são"+anos);
        
        
    }
}

Oi.
Acho que você não entendeu muito bem o problema.
Se a Ana cresce 2 cm por ano e Zé, 3, você deve iterar enquanto a altura do Zé seja menor que a da Ana. Dentro da estrutura de repetição, você deve somar 0.2 na altura de Ana e 0.3 na altura de Zé. Além disso, deve incrementar uma variável (por exemplo, anos), para, no final apresentar o valor. Portanto, falta criar uma nova variável inteira, arrumar o cabeçalho do while e fazer os cálculos dentro do while.

A questão é que eu não sei fazer a conta para achar quantos anos serão necessários.

vê se ajuda…

[code]import javax.swing.*;

public class Altura {

public static void main(String[] args) {   
    String nome_homem,nome_mulher;   
    double altura_homem,altura_mulher;   
    int anos=0;   
       
    nome_homem=JOptionPane.showInputDialog("Digite o nome do homem");   
    altura_homem=Double.parseDouble(JOptionPane.showInputDialog("Digite a altura do homem"));   
       
    nome_mulher=JOptionPane.showInputDialog("Digite o nome do mulher");   
    altura_mulher=Double.parseDouble(JOptionPane.showInputDialog("Digite a altura do mulher"));   
       
    while (altura_homem < altura_mulher){   
          
           altura_homem += 3;
           altura_mulher += 2;
            
           anos++;

    }   
       
   System.out.println ("os anos necessarios são"+anos);   
       
       
}   

} [/code]

Tá melhor que o meu,mais o resultado da 0.o certo seria 4 anos para que a altura do homem fique maior que a da mulher…

Isso que o André te repondeu. quem vai achar é o programa, simulando os anos (em cada laço) somando a altura que cada um cresce. Aí qdo a altura de um ultrapassar a dos outro, vc terá o número de anos. Apesar de nao estar explicito, é provavelmente assim que quem fez o enunciado deseja que vc faça.
Caso contrário, vc poderia fazer via sistema:

Ana: alturaDeAna=1.5 +0.02ano
Zé/; alturaDoZe=1.1+0.03
ano.

Condição: alturadoDoZe>alturaDeAna.

Substituindo as eq na condiçao:

1.1+0.03ano>1.5+0.02ano => 0.01ano>0.4 => ano>40 anos

Acho que deve ter errado no enunciado, para dar 4 anos, a condição teria que ser eles terem o mesmo tamanho e uma das duas coisas:

  1. a diferença de altura entre eles tem que ser de 4 cm
  2. Ze cresce 30 cm por ano e Ana 20.

Talvez tenha se confundido no enunciado.

dentro do for tem que ser…
Se ele cresce 30 centimetros e ela 20 centimetros…
altura_homem += 0.3;
altura_mulher += 0.2;

A culpa é da professora,foi ela que passo a lista…eu fiz na minha cabeça assim

ela tem 1.5 + 1 ano =1.7 +1ano=1.9 +1ano=1.10 +1ano=1.12

ele tem 1.1 +1 ano=1.4 +1ano=1.7 +1ano=1.10 +1ano=1.13

ele ficaria mais alto no 4 ano…Só que isso eu não consegui aplica no programa.

Então é a opção 2, ele cresce 30 cm por ano e ela 20. E Na realidade, no 4 ano eles estariam do mesmo tamanho, caso em que teria quer ser usado >= na inequaçao. Como ela quer maior, seria no 5 ano…

Mais que isso é injusto.

public class Altura
{
        public static void main(String[] args)
        {
                double alturaZe = 1.1, alturaAna = 1.5;
                double crescimentoAnoZe = 0.3, crescimentoAnoAna = 0.2;
                int anos = 0;

                while (alturaZe < alturaAna) {
                        anos++;
                        alturaZe += crescimentoAnoZe;
                        alturaAna += crescimentoAnoAna;
                }

                System.out.println("Em " + anos + " anos, Ze vai ser maior.");
        }
}

Valeu a todos que postaram,Obrigado!!!