Problemas com Array

5 respostas
V
Bom dia, estou com problemas em um array que deverá mostrar o mês (número) e quantidade de dias. O código é o seguinte:
public class MesDias {
    
    int mes;
    int dias;
}

class MesDiasJuntos{

    public static void main(String[] args) {

          MesDias [] qtdMesDias = new MesDias[2];             
          int x=0;
          qtdMesDias[0].mes = 1;
          qtdMesDias[1].dias = 31;

          qtdMesDias[0].mes = 2;
          qtdMesDias[1].dias = 28;

          qtdMesDias[0].mes = 3;
          qtdMesDias[1].dias = 31;

          qtdMesDias[0].mes = 4;
          qtdMesDias[1].dias = 30;

          qtdMesDias[0].mes = 5;
          qtdMesDias[1].dias = 31;

          qtdMesDias[0].mes = 6;
          qtdMesDias[1].dias = 30;

          qtdMesDias[0].mes = 7;
          qtdMesDias[1].dias = 31;

          qtdMesDias[0].mes = 8;
          qtdMesDias[1].dias = 31;

          qtdMesDias[0].mes = 9;
          qtdMesDias[1].dias = 30;

          qtdMesDias[0].mes = 10;
          qtdMesDias[1].dias = 31;

          qtdMesDias[0].mes = 11;
          qtdMesDias[1].dias = 30;

          qtdMesDias[0].mes = 12;
          qtdMesDias[1].dias = 31;

          while (x<2) {
              System.out.println (qtdMesDias[x].mes);
              System.out.println(qtdMesDias[x].dias);
          }
          

     }

}

E o erro é o seguinte:

Exception in thread "main" java.lang.NullPointerException
        at arrays.MesDiasJuntos.main(MesDias.java:24)
Java Result: 1

5 Respostas

W

viniciussspds,

Bom dia, caro, acho melhor você estudar um pouco mais sobre os tipo de variaveis do java.
Você declarou um vetor do tipo MesDias com duas posicoes.

MesDias [] qtdMesDias = new MesDias[2];

Porém cada posição deste vetor tem um objeto do tipo MesDias e voce manipula como se cada posição tivesse um atributo.

qtdMesDias[0].mes = 1; qtdMesDias[1].dias = 31;
a manipulação do vetor seria assim.

qtdMesDias[0].mes = 1;  
qtdMesDias[0].dias = 31;

posta o codigo todo da classe MesDias, pois o java esta informando que na linha 24 desta classe tem um ponto null

V
Foi feito a correção mais continua com o mesmo erro:
public class MesDias {
    
    int mes;
    int dias;
}

class MesDiasJuntos{

    public static void main(String[] args) {

          MesDias [] qtdMesDias = new MesDias[2];
          int x=0;
          qtdMesDias[0].mes = 1;
          qtdMesDias[0].dias = 31;
          
          qtdMesDias[1].mes = 2;
          qtdMesDias[1].dias = 28;

        
          while (x<2) {
              System.out.println (qtdMesDias[x].mes);
              System.out.println(qtdMesDias[x].dias);
          }
          

     }

}
W

Qual linha esta o erro

pmlm
(...)
 qtdMesDias[0] = new MesDias();  
 qtdMesDias[0].mes = 1;  
 qtdMesDias[0].dias = 31;  

qtdMesDias[1] = new MesDias();  
(...)
W

Vinicius,

Ficaria mais ou menos assim a sua resposta

public class MesDias {

    int mes;
    int dias;

    //metodo construtor da classe, este metodo recebe e seta o valor dos atributos definidos
    public MesDias(int mes, int dias) {
        this.mes = mes;
        this.dias = dias;
    }

    //Este metodo retorna o valor dos atributos da classe convertidos para String
    public String toString() {
        return mes + " " + dias;
    }
}

class MesDiasJuntos {

    public static void main(String[] args) {

        //inicia-se um vetor de mesDias com 2 posições.
        MesDias[] qtdMesDias = new MesDias[2];

        //inicia-se um mes com seus dias, utilizando o contrutor da classe
        MesDias janeiro = new MesDias(1, 31);

        //adiciona o mes iniciado no vetor
        qtdMesDias[0] = janeiro;
        

        MesDias fevereiro = new MesDias(2, 28);

        qtdMesDias[1] = fevereiro;

        //laço para percorrer o vetor inteiro com os messes
        for (int i = 0; i < qtdMesDias.length; i++) {
            //metodo para imprimir o valor das variaveis da classe chamando toString();
            System.out.println(qtdMesDias[i].toString());
        }

    }
}

Caro, a sua classe vai ser quase isso, é só você mudar um numero e instanciar os objetos necessarios e estará pronto, porém lembre-se que voce deve intender o que esta acontencendo. Se não entender posta ai que ajudo.

Criado 7 de setembro de 2010
Ultima resposta 7 de set. de 2010
Respostas 5
Participantes 3