Duvida iniciante, cannot find simbol

Olá a todos, sou programador em outras linguagens e estou iniciando em Java.

Estou com uma duvida em um prog de exemplo:
Construir uma classe com 4 construtores com parametros e 1 sem parametros. Chamar este construtor sem parametros e dele chamar os outros. O problema é que os construtores sem paramentros nao estao sendo reconhecidos, e da 4 erros de connot find simbol. Nas linhas Forma(0); Forma(0,0); Forma(0,0,0) e Forma(0,0,0,0).

import javax.swing.JOptionPane;

public class Forma {
int a, b, c, d; 


	public Forma(int q) {
		this.a = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Primeiro valor", "Mensagem", 1));
	}

	public Forma(int q, int w) {
		this.a = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Primeiro valor", "Mensagem", 1));
		this.b = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Segundo valor", "Mensagem", 1));
	}

	public Forma(int q, int w, int e) {
		this.a = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Primeiro valor", "Mensagem", 1));
		this.b = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Segundo valor", "Mensagem", 1));
		this.c = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Terceiro valor", "Mensagem", 1));
	}

	public Forma(int q, int w, int e, int r) {
		this.a = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Primeiro valor", "Mensagem", 1));
		this.b = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Segundo valor", "Mensagem", 1));
		this.c = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Terceiro valor", "Mensagem", 1));
		this.d = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Quarto valor", "Mensagem", 1));
	}

	public Forma(){
		int opt = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha entre 1 e 4", "Mensagem", 1));
		switch(opt) {

			case 1: 
			Forma(0);   // erro aqui
			break;

			case 2: 
			Forma(0,0);  // erro aqui
			break;

			case 3: 
			Forma(0,0,0);  // erro aqui
			break;

			case 4: 
			Forma(0,0,0,0);  // erro aqui
			break;

			default: 
			JOptionPane.showMessageDialog(null, "O valor digitado deve estar entre 1 e 4", "Mensagem", 1);
			break;

		}
	}

	public void mostrarForma() {
		System.out.println("A forma 1 é " + this.a);
		System.out.println("A forma 2 é " + this.b);
		System.out.println("A forma 3 é " + this.c);
		System.out.println("A forma 4 é " + this.d);
	} 

}

// clase de chamada

public class Desenho {

	public static void main (String []args) {

		Forma x = new Forma();
		x.mostrarForma();
	} 
}

Obrigado.

Bom dia!

O código está reclamando por que não está encontrando o tipo do método.

Por exemplo:


import javax.swing.JOptionPane;

public class Forma {
int a, b, c, d; 


	public void Forma(int q) {
		this.a = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Primeiro valor", "Mensagem", 1));
	}

	public void Forma(int q, int w) {
		this.a = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Primeiro valor", "Mensagem", 1));
		this.b = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Segundo valor", "Mensagem", 1));
	}

	public void Forma(int q, int w, int e) {
		this.a = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Primeiro valor", "Mensagem", 1));
		this.b = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Segundo valor", "Mensagem", 1));
		this.c = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Terceiro valor", "Mensagem", 1));
	}

	public void Forma(int q, int w, int e, int r) {
		this.a = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Primeiro valor", "Mensagem", 1));
		this.b = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Segundo valor", "Mensagem", 1));
		this.c = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Terceiro valor", "Mensagem", 1));
		this.d = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o Quarto valor", "Mensagem", 1));
	}

	public Forma(){
		int opt = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha entre 1 e 4", "Mensagem", 1));
		switch(opt) {

			case 1: 
			Forma(0);   // erro aqui
			break;

			case 2: 
			Forma(0,0);  // erro aqui
			break;

			case 3: 
			Forma(0,0,0);  // erro aqui
			break;

			case 4: 
			Forma(0,0,0,0);  // erro aqui
			break;

			default: 
			JOptionPane.showMessageDialog(null, "O valor digitado deve estar entre 1 e 4", "Mensagem", 1);
			break;

		}
	}

	public void mostrarForma() {
		System.out.println("A forma 1 é " + this.a);
		System.out.println("A forma 2 é " + this.b);
		System.out.println("A forma 3 é " + this.c);
		System.out.println("A forma 4 é " + this.d);
	} 

}

Ah, não esqueça de tratar os dados, pois os seus métodos estão esperando um inteiro e a aplicação daria erro se a gente mandar um outro tipo de dado.

oi

construtores são utilizados para tarefas de inicialização, tipo carregar valores default de variáveis, inicializar um recurso de acesso a bancos por exemplo

troque os seus contrutores por métodos que irá funcionar

abs

PS: sumihara, repare que não são métodos, ele fez uma sobrecarga de construtores

é verdade!

Me confundi! …rs

Engraçado… qdo eu troquei o tipo do construtor… funcionou normalmente.

nas linhas que vc ta com erro, vc tem que trocar para algo como


Forma forma1 = new Forma(0);

assim vc vai estar inicializando a variável forma1. do jeito que tá vc só ta o compilador acha que vc ta chamando métodos.

ihhh desencana… eu viajei grandão …rs

[quote=sumihara]é verdade!

Me confundi! …rs

Engraçado… qdo eu troquei o tipo do construtor… funcionou normalmente.[/quote]

Você não trocou apenas o tipo do construtor, você acrescentou void que indica que e um método visto que construtores não tem retorno
a forma de um construtor é assim:

<public,private,protected>NomeDaClasse(){
}

Quando você coloca public void NomeDaClasse(){} você criou um metodo que por acaso tem o mesmo nome da classe, embora essa não seja uma boa prática, como vc mesmo notou pode confundir com um construtor.

Qualquer dúvida diga.

Valeu

entendi!

valeu!

:slight_smile: