Ajuda, erro na hora de calcular

public void idade(){
String nomeA, nomeB;
double idadeA, idadeB;

   System.out.print("Digite o primeiro nome:");
   nomeA = ler.next();
   
   System.out.println("Digite o segundo nome:");
   nomeB = ler.next();
   
   System.out.println("Digite a idade da primeira pessoa: ");
   idadeA = ler.nextDouble();
   
   System.out.println("Digite a idade da segunda pessoa: ");
   idadeB = ler.nextDouble();
   
   double media = (idadeA + idadeB)/2; 
   
   System.out.printf("A idade média de %5 e %5 é de %f anos. ", nomeA, nomeB, media); 

}

Eu não consigo entender porque no fim está dizendo que não é possível efetuar cálculo, apesar que eu consigo colocar os nomes e as idades. Poderia me ajudar?

Seu System.out.printf está errado, tente isso:

import java.util.Scanner;

public class Test {
    public void idade() {
        String nomeA, nomeB;
        double idadeA, idadeB;

        Scanner ler = new Scanner(System.in);

        System.out.println("Digite o primeiro nome:");
        nomeA = ler.next();

        System.out.println("Digite o segundo nome:");
        nomeB = ler.next();

        System.out.println("Digite a idade da primeira pessoa: ");
        idadeA = ler.nextDouble();

        System.out.println("Digite a idade da segunda pessoa: ");
        idadeB = ler.nextDouble();

        double media = (idadeA + idadeB)/2;

        System.out.printf("A idade média de %s e %s é de %f anos. ", nomeA, nomeB, media);

        ler.close();
    }

    public static void main(String[] args) {
        new Test().idade();
    }
}

Para String voce usa o %s.

Para numeros voce usa o %f, se quiser limitar as casas decimais pode colocar assim: “%.2f”, onde o 2 seria a quantidade de casas depois do ponto.

1 curtida

@heycristhian Opaa, obrigadaa, deu certo!!
Nem tinha notado JSKSMSMSMS.

Aproveitando a oportunidade, saberia me dizer como faço pra colocar tipo uma pergunta “deseja continuar? S/N”?

1 curtida

Ve se te ajuda. Para isso, voce pode usar o do… while. Ele executa primeiro o código e em seguida ele faz a condicão. Se a condição retornar true, ele repete o código, caso contrário ele sai do laço:

import java.util.Scanner;

public class Test {
    public void idade() {
        Scanner ler = new Scanner(System.in);

        String resposta = "";

        do {
            String nomeA, nomeB;
            double idadeA, idadeB;


            System.out.println("Digite o primeiro nome:");
            nomeA = ler.next();

            System.out.println("Digite o segundo nome:");
            nomeB = ler.next();

            System.out.println("Digite a idade da primeira pessoa: ");
            idadeA = ler.nextDouble();

            System.out.println("Digite a idade da segunda pessoa: ");
            idadeB = ler.nextDouble();

            double media = (idadeA + idadeB) / 2;

            System.out.printf("A idade média de %s e %s é de %.0f anos. ", nomeA, nomeB, media);

            System.out.println();
            System.out.println();
            System.out.println("Deseja continuar?");
            resposta = ler.next();

        } while (resposta.equalsIgnoreCase("sim"));

        ler.close();

    }

    public static void main(String[] args) {
        new Test().idade();
    }
}
1 curtida

@heycristhian Muitoo obrigadaa, realmente me ajudou!! :blush:

1 curtida

Sem problemas, abraçosss

1 curtida