1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

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; 
        }



    }
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags orientação-a-objetos ou faça a sua própria pergunta.