Duvida no exercício/ pede para não ter interação com o usuário

Faça um programa que solicite inicialmente ao usuário a quantidade de pessoas. Em seguida o programa deve solicitar a idade seguida do estado civil (C - casado, S - solteiro, O - outros) desse conjunto de pessoas. Ao ler as entradas verifique se a idade é maior ou igual a 0 e o estado cívil é válido, caso contrário torne ler cada dado inválido novamente.

O programa deve calcular e exibir ao final, nesta ordem, em linhas separadas:

  1. A quantidade de pessoas solteiras

  2. O valor da média de idade das pessoas casadas (apenas se houver ao menos 1 pessoa casada!)

  3. A idade da pessoa mais velha (a maior idade do conjunto)

Eu fiz o codigo abaixo, porem ainda da erro:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);        
        int n = in.nextInt(),  idade ;
        char civil;
        int qtdeSolteiros=0, qtdeCasados=0, maiorIdade=-1, somaICasados=0, mediaICasados;        
        for(int i=0; i < n; i++){           
            do{            
            idade = in.nextInt();
            }while(idade < 0);           
            do{
             civil = in.next().toUpperCase().charAt(0);
            } 
            while(civil != 'S' && civil != 'C' && civil != 'O');
           if (civil == 'S'){
                qtdeSolteiros++;
            }else if (civil == 'C'){
                qtdeCasados++;
                somaICasados += idade;            
                }  
             if (idade >  maiorIdade)
                maiorIdade = idade;
                 }        
        System.out.println(qtdeSolteiros);
        if (qtdeCasados != 0){
            mediaICasados = somaICasados/qtdeCasados;
            System.out.println(mediaICasados);
        }    
        System.out.println(maiorIdade);       
    }
}

Que erro?

A única coisa que observei que chamou atenção são os calculos de média. Você está fazendo as contas com inteiros e o ideal seria usar double:

double mediaICasados = (double) somaICasados/qtdeCasados;

1 curtida