Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[VETORES] print de vetores e logica com problema

Boa noite pessoal , estou com problema na logica do meu programa , nao consigo fazer com que apareça apenas a empresa com maior faturamento e a de menor faturamento . ( e tambem o "sysout" da linha 83 nao funciona ) , preciso de ajuda

import java.util.Scanner;

class Empresa {
    public String cnpj;
    public String nome;
    public Integer anoDeAbertura;
    public Double faturamentoMensal;

    public Empresa lerDados() {
        Scanner scan = new Scanner(System.in);
        Empresa company = new Empresa();

        System.out.println("Digite o CNPJ da empresa : ");
        company.cnpj = scan.nextLine();

        System.out.println("Digite o faturamento mensal da empresa : ");
        company.faturamentoMensal = scan.nextDouble();
        scan.nextLine();

        System.out.println("Digite o nome da empresa :");
        company.nome = scan.nextLine();

        System.out.println("Digite o ano de abertura da empresa : ");
        company.anoDeAbertura = scan.nextInt();
        System.out.println("---");
        scan.nextLine();
        return company;

    }

}

public class Questao1 {

    public static void main(String[] args) {

        Empresa vetEmpresa[] = new Empresa[10];
        for (int i = 0; i < vetEmpresa.length; i++) {
            Empresa company = new Empresa();
            vetEmpresa[i] = company.lerDados();
        }

        Questao1 e = new Questao1();
        e.imprimirEmpresa(vetEmpresa);

    }

    void imprimirEmpresa(Empresa vetEmpresa[]) {
        Double empresaRicaFaturamento = 0.0;
        String empresaRicaCnpj = "";
        String empresaRicaNome = "";
        Integer empresaRicaAnoDeAbertura = 0;

        Double empresaPobreFaturamento = 0.0;
        String empresaPobreCnpj = "";
        String empresaPobreNome = "";
        Integer empresaPobreAnoDeAbertura = 0;

        //inicio de onde deve estar o erro

        for (int i = 0; i < vetEmpresa.length; i++) {

            if (empresaRicaFaturamento > vetEmpresa[i].faturamentoMensal) {
                empresaRicaFaturamento = vetEmpresa[i].faturamentoMensal;
                empresaRicaCnpj = vetEmpresa[i].cnpj;
                empresaRicaNome = vetEmpresa[i].nome;
                empresaRicaAnoDeAbertura = vetEmpresa[i].anoDeAbertura;

            }


            if (empresaPobreFaturamento < vetEmpresa[i].faturamentoMensal) {
                empresaPobreFaturamento = vetEmpresa[i].faturamentoMensal;
                empresaPobreCnpj = vetEmpresa[i].cnpj;
                empresaPobreNome = vetEmpresa[i].nome;
                empresaPobreAnoDeAbertura = vetEmpresa[i].anoDeAbertura;
            }

        }
        System.out.println("===============================================");
        System.out.println("Empresa mais POBRE :");
        System.out.println(empresaRicaFaturamento);
        System.out.println(empresaRicaNome);
        System.out.println("===============================================");
        System.out.println("Empresa mais RICA :");

        //essas duas linhas nao aparecem(invisiveis/nulas)

        System.out.println(empresaPobreFaturamento);
        System.out.println(empresaPobreNome);
    }

    //fim de onde deve estar o erro

}
1 resposta
solução!

Bom dia, creio que a lógica de seu ifs esteja um pouco equivocada

1) o valor empresaPobreFaturamento deve ser inicializado com um Double.MAX_VALUE. para que qualquer valor encontrado o seja atribuido para o mesmo

2) Se entendi bem o que vc deseja, o if da pessoa pobre deveria considerar a atribuição de valores quando o valor de faturamento da empresa for MENOR que o já encontrado

if (empresaPobreFaturamento **>** vetEmpresa[i].faturamentoMensal) {
                empresaPobreFaturamento = vetEmpresa[i].faturamentoMensal;
                empresaPobreCnpj = vetEmpresa[i].cnpj;
                empresaPobreNome = vetEmpresa[i].nome;
                empresaPobreAnoDeAbertura = vetEmpresa[i].anoDeAbertura;
            }

3) o if de empresa rica deveria considerar o armazenamento de valores quando o faturamento for maior que o já encontrado

            if (empresaRicaFaturamento **<** vetEmpresa[i].faturamentoMensal) {
                empresaRicaFaturamento = vetEmpresa[i].faturamentoMensal;
                empresaRicaCnpj = vetEmpresa[i].cnpj;
                empresaRicaNome = vetEmpresa[i].nome;
                empresaRicaAnoDeAbertura = vetEmpresa[i].anoDeAbertura;

            }

OBS: se atende a ordem das suas variaveis

        System.out.println("===============================================");
        System.out.println("Empresa mais POBRE :");
        System.out.println(empresaRicaFaturamento);
        System.out.println(empresaRicaNome);
        System.out.println("===============================================");
        System.out.println("Empresa mais RICA :");
        System.out.println(empresaPobreFaturamento);
        System.out.println(empresaPobreNome);

Você imprime que vai falar sobre a empresa mais pobre mas printa valores da empresa mais rica. A mesma inversão de impressão acontece com a emrpesa mais rica

OBS2: as empresas podem ter faturamento negativo? Caso seja possível, vpcê deve iniciar a variavel empresaRicaFaturamento com o valor Double.MIN_VALUE

[]s