Error instantiating class

1

I'm trying to read data from class dados on Main and it gives me error on my array : cadastro[i] = new dados();

Data class:

class dados {
    private int numero;
    private String nome;
    private String sexo;

public dados(int nr,String n,String s, int idd,String m,String prv,String rl) //**********
    { 
    numero = nr;
    nome = n;
    sexo = s;
    idade = idd;
    moradia = m;
    provincia = prv;
    relegiao = rl;
    }

    public int getNumero(){
        return this.numero;
    }
    public void setNumero(int nr){
        this.numero = nr;
    }

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

    public String getSexo(){
        return sexo;
    }
    public void setSexo(String s){ 
        this.sexo = s;
    }

class main:

public class Main {
    public static void main(String[]args){
          dados cadastro[] = new dados[100];
          for(int i = 0; i< cadastro.length; i++){

             cadastro[i] = new dados(); //esta dando erro nessa linha

              cadastro[i].getNumero(); // Recuperando o numero
                                cadastro[i].setNumero(Integer.parseInt(//habilitando a insercao
                                        JOptionPane.showInputDialog("Atribua um Numero ao Cidadao")));//Atribuindo um valor

                                cadastro[i].getNome();// Recuperando o nome
                                cadastro[i].setNome( //habilitando a insercao
                                        JOptionPane.showInputDialog
                                        ("Digite o Nome Completo do Cidadao"));//Atribuindo um valor ao nome
    
asked by anonymous 09.08.2017 / 00:59

1 answer

8

The problem is that you have created a constructor that takes arguments to start the properties of the class, but is trying to start an object of this class without passing any. Either you create an alternative constructor without arguments, or you start the class correctly by passing all the values you set in the constructor.

Another thing is to always follow the java convention correctly, where classes should always start with a capital .

Without messing around with the code, the simplest solution would be to create the constructor without parameters, as below:

class Dados {
    private int numero;
    private String nome;
    private String sexo;

public Dados(){}

public Dados(int nr,String n,String s, int idd,String m,String prv,String rl) //**********
    { 
    numero = nr;
    nome = n;
    sexo = s;
    idade = idd;
    moradia = m;
    provincia = prv;
    relegiao = rl;
    }

    public int getNumero(){
        return this.numero;
    }
    public void setNumero(int nr){
        this.numero = nr;
    }

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

    public String getSexo(){
        return sexo;
    }
    public void setSexo(String s){ 
        this.sexo = s;
    }
    
09.08.2017 / 01:30