Versão atual:

Problemas com array tipo referencia

Pessoal, sou iniciante em POO e estou tendo algumas dificuldade na resolução de uma questão. Vou colocar a questão seguida do codigo até onde eu consegui fazer. A Classe País eu sei que esta correta, mas a Classe Continente provavelmente possui erros. Por favor ajudem.

Escreva em Java uma classe Continente. Um continente possui um nome e é composto por um conjunto de países. Forneça os membros de classe a seguir:

a) Construtor que inicialize o nome do continente;

b) Um método que permita adicionar países aos continentes;

c) Um método que retorne a dimensão total do continente;

d) Um método que retorne a população total do continente;

e) Um método que retorne a densidade populacional do continente;

f) Um método que retorne o país com maior população no continente;

g) Um método que retorne o país com menor população no continente;

h) Um método que retorne o país de maior dimensão territorial no continente; i) Um método que retorne o país de menor dimensão territorial no continente;

j) Um método que retorne a razão territorial do maior pais em relação ao menor país.

Classe Pais:

public class Pais{

     String codigoISO;
     String nome;
     int populacao;
     double dimensao;
     Pais[] vizinhos; // Criando um array do tipo país.
     int qtdevizinhos;


     //a) Construtor que inicialize o código ISO, o nome e a dimensão do país; instanciado 
    public Pais(String codigoISO,String nome, int populacao,double dimensao){
        this.setCodigoISO(codigoISO);
        this.setNome(nome);
        this.setPopulacao(populacao);
        this.setDimensao(dimensao);    
        this.vizinhos = new Pais[40];
        this.qtdevizinhos = 0;
    }      

    //b)Métodos de acesso (getter/setter) para as propriedades código  ISSO, nome, população e dimensão do país;
    public void setCodigoISO(String codigoISO){
        this.codigoISO = codigoISO;
    }

    public String getCodigoISO(){
        return this.codigoISO;
    }


    public void setNome(String nome){
        this.nome = nome;
    }

    public String getNome(){
        return this.nome;
    }


    public void setPopulacao(int Populacao){
        this.populacao = populacao;
    }

    public int getPopulacao (){
        return this.populacao;
    }


    public void setDimensao(double dimensao){
        this.dimensao = dimensao;
    }

    public double getDimensao(){
        return this.dimensao;
    }

    //c)Um método que permita verificar se dois objetos representam o mesmo país (igualdade semântica). Dois países são iguais se tiverem o mesmo código ISO;

    public boolean equals(Pais outro){
        return (this.getCodigoISO().equals(outro.getCodigoISO())); 
    }

    //d) Um método que informe se outro país é limítrofe do país que recebeu a mensagem;

    public void addvizinho(Pais vizinho){
        this.vizinhos[qtdevizinhos] = vizinho; 
        this.qtdevizinhos++;

    }

    //metodo que verifica se o pais ja é vizinho. 

    public boolean ehVizinho(Pais pais){
        for(int iCount = 0;  iCount < this.vizinhos.length; iCount++){
        if((this.vizinhos[iCount] != null) && this.vizinhos[iCount].equals(pais))
               return true; 
            }

        return false;

    }

    //e) Um método que retorne a densidade populacional do país;
    public double getDensidadePopulacional(){
        return this.getPopulacao() / this.getDimensao(); 
    }

    //f) Um método que receba um país como parâmetro e retorne a lista de vizinhos comuns aos dois países.
    public Pais[] getVizinhosComuns(Pais outro){
        int qtdeVizinhosComuns = 0;
        Pais[] vizinhosComuns = new Pais[40];
        for(int i = 0; i < this.vizinhos.length; i++)
          if(this.vizinhos[i] != null && outro.ehVizinho(this.vizinhos[i]))
            vizinhosComuns[qtdeVizinhosComuns++] = this.vizinhos[i];
        return vizinhosComuns;

    }

Classe Continente

public class Continente{
    private String continente;
    private Pais[] paises;
    private int qtdepaises;
    private double totaldimensao;
    private int totalpessoas;
    private double densidade;
    private int maiorpopulacao;
    private int menorpopulacao;


    //a) Construtor que inicialize o nome do continente;
    public Continente(String continente){
        this.continente = continente;
        this.paises = new Pais[40];
        qtdepaises = 0;
    }

    //b) Um método que permita adicionar países aos continentes;
    public void addPais(Pais pais){
        this.paises[qtdepaises] = pais;
        this.qtdepaises++; 
        this.totaldimensao = this.totaldimensao + pais.getDimensao();
        this.totalpessoas = this.totalpessoas + pais.getPopulacao();
        this.densidade = this.totalpessoas / this.totaldimensao;

        this.maiorpopulacao = paises[0].getPopulacao();


        this.menorpopulacao = paises[0].getPopulacao();


    }

    public double getTotalDimensao(){
         return this.totaldimensao;
        }


    public int getMaiorPopulacao(Pais[] pais){
        if(this.getPais.Populacao() > this.maiorpopulacao)
           this.maiorpopulacao = pais.getPopulacao();
        return this.maiorpopulacao;
        }

    public int getMenorPopulacao(Pais[] paises){
        if(pais.getPopulacao() < this.menorpopulacao)
           this.menorpopulacao = pais.getPopulacao();
        return this.menorpopulacao; 
        }



    }

Versões(3):

Ver a versão formatada

Problemas com array tipo referencia

Comentário

new question