Erro na classe

Está dando erro nesta classe na chamada do método construtor. O que está errado ?

public class CalculaArea
{
public CalculaArea(int alt, int larg)
{
this.alt = alt;
this.larg = larg;
}

public double RetornaArea(int alt, int larg)
{
int area = alt*larg;
return area;
}

public static void main(String args[])
{
CalculaArea ca = new CalculaArea();
System.out.println("O valor da área é "+ca.RetornaArea(4,5));
}
}

Ola

Simples, na classe vc declara um construtor que recebe dois argumentos inteiros, e nenhum construtor padrão (sem argumentos), e no metodo main vc tenta usar o construtor padrão, este é o erro.

Quando vc declara um construtor numa classe, o compilador não gera o construtor padrão, sendo assim necessário declará-lo explicitamente.

Então qual é a forma correta de fazer ? Assim ?

public static void main(String args[])
{
CalculaArea ca;
ca = new CalculaArea(int alt, int larg);
System.out.println("O valor da área é "+ca.RetornaArea(4,5));
}
}

[quote=“rnpenna”]Então qual é a forma correta de fazer ? Assim ?

public static void main(String args[])
{
CalculaArea ca;
ca = new CalculaArea(int alt, int larg);
System.out.println("O valor da área é "+ca.RetornaArea(4,5));
}
}[/quote]

Não, não é assim não, pq vc tem que ou declarar um contrutor padrão, assim:

public CalculaArea(){}

ou passar os argumentos que o construtor pede, assim, por exemplo:

ca = new CalculaArea(0,0); //por exemplo.

Mas no seu caso eu percebi que vc não usa os atritbutos da classe para fazer o calculo da area, então acho que é melhor vc fazer o construtor padrão… ou talves colocar o teu método “RetornaArea” estatico.

Só como adição, em java, a gente segue um parão para nomiar classes, metodos, atributos, etc, é +/- assim:
no caso de nomes de classes, deve-se começar por letra maiuscula seguidos de minusculos, se houver mais de um nome, a primeira letra deste deve ser maiuscula… então “CalculaArea” esta legal.

para metodos e atributos, parametros e variaveis de metodos segue quase o mesmo padrão de nomes de classe, exceto pelo fato de ter que começar com letras minusculas, para não confundir com o nome da classe… então “RetornaArea” fica melhor “retornaArea”…

Mas isto só como uma observação.

Valeu