Iniciante em Java - Problemas com dois exercícios

Antes de me condenarem, sim - eu pesquisei. Porém esse fórum é enorme e depois de tanto ler, não consegui encontrar a solução de meu problema no meio dessa sopa de tópicos.
Tenho dois exercícios pra fazer, então vou começar postando o que está quase pronto. Meu problema nesse é que não consigo imprimir os dados na tela. Quem postar a solução, por favor, me explique onde está o meu erro:

3) Crie uma classe de nome Data que armazene o dia, mês e ano
de uma data. Em seguida crie um método de nome
?entraDados? que receba as 3 informações para gravar nos
atributos, outro método de nome ?imprimeData? que imprime
a data no formato dia/mês/ano.

Classe:

[code]public class Data {
public static void main(String[] args){
}
int d;
int m;
int a;

int entraDados(int d, int m, int a){
return entraDados(19, 04, 1993);
}
void imprimirDados(){

System.out.println(d + “/” + m + “/” + a);
}
}[/code]

Exercício 3 - RESOLVIDO

4) Crie uma classe de nome Conta que armazene atributos para o
nome do cliente, o número da conta e saldo. Em seguida, crie
um método de nome ?imprimir? que imprime os dados da
conta, outro método de nome ?sacar? que recebe um valor e
saca do saldo, outro ?depositar? que recebe um valor e
deposita na conta.

[code]public class Conta {
String nomecliente;
int conta;
float saldo;

public static void main(String args[]){
	Conta c1 = new Conta();
	c1.nomecliente = "João";
	c1.conta = 2675-8;
	c1.saldo = 1000;
	}

void imprimirConta(){
	System.out.println("Nome do cliente: " + nomecliente);
	System.out.println("Número da conta: " + conta);
	System.out.println("Saldo: " + "R$" + saldo);

}

float sacar(){
	float saldoc1 = saldo;
	float sacar = 500;
		 if  (sacar<=saldoc1);
    float saldo = saldoc1 - sacar;
   	return saldo;

}
float depositar(){
float saldoc1 = saldo;
float depositar = 200;
if (depositar>0);
float saldo = saldoc1 + depositar;
return saldo;
}
}[/code]

Alterei o exercício 4 e compilou, mas o método imprimirConta não está funcionando, me ajudem.

exercicio número 3 tente assim:

[code]public class Data {
private int d;
private int m;
private int a;

public static void main(String[] args){ 
	Data d = new Data();
	d.entraDados(19, 04, 1993);
	d.imprimirDados();
}


private void entraDados(int d, int m, int a){ 
	this.d = d;
	this.m = m;
	this.a = a;
} 

private void imprimirDados(){ 
	System.out.println(d + "/" + m + "/" + a); 
} 

}[/code]

Funcionou amigão, e o melhor, eu compreendi a mudança que foi feita. Muito obrigado mesmo.
Mas ainda tenho problemas com o exercício 4. Esperando por mais respostas.

Observe que nesse método o seu programa se inicia

public static void main(String args[]){ Conta c1 = new Conta(); c1.nomecliente = "João"; c1.conta = 2675-8; c1.saldo = 1000; }

então você criou os métodos normalmente mais nem sequer os usa apenas acessa suas variáveis diretamente da classe Conta através da referencia ‘c1’ então o que sugiro é que adicione mais linhas ai como:

imprimirConta(); //imprime os dados
System.out.println("Novo saldo após sacado é: "+sacar()); //aqui você chama o método sacar e imprime o valor retornado
System.out.println("Novo saldo após depositado é: "depositar()); //aqui você chama o método depositar e imprime o valor retornado

flw!

Bom, pra começar tente colocoar seus códigos dentro das tags CODE, isso facilitaria muito nossa vida!
Então vamos lá!

No seu primeiro código tem um problema no seguinte trecho:

int entraDados(int d, int m, int a){
	return entraDados(19, 04, 1993);
}

Quando você chamar esse método ele vai começar e retornar o resultado de outra instância dele mesmo! Ou seja, ele vai criar na memória um espaço para o método, como o método depende do resultado de outro método para terminar o 1o entraDados vai ficar na espera, aí o segundo entraDados dependerá de um 3o entraDados e assim por diante. Esse método vai entrar em “looping” até estourar a memória!
Um código correto seria o código que o companheiro postou:

    private void entraDados(int d, int m, int a){
        this.d = d;
        this.m = m;
        this.a = a;
    }

Se você quer que seu código execute uma ação ao iniciar o programa você tem que colocar no metodo main:

    public static void main(String[] args){
        MainTeste d = new MainTeste();
        d.entraDados(19, 04, 1993);
        d.imprimirDados();
    }

Agora vamos ao próximo exercicio:

String entraDados(String contanomecliente, int contaconta, float contasaldo){
	contanomecliente = nomecliente;
	contaconta = conta;
	contasaldo = saldo;
	return entraDados("João", 2675-8, 0);   //Recursividade que nao deveria existir nesse caso
}

Aqui você fez quase tudo certo. A última linha é desnecessária e você está fazendo que nem você fez no exercicio anterior. Você está chamando o mesmo método dentro dele mesmo! E você está confundindo na atribuição das variáveis, você recebe um valor contaconta e atribui ele a this.conta.

contanomecliente = nomecliente;   //Errado
nomecliente = contanomecliente;   //Certo

entraDados não precisa retornar um String, na verdade não precisa retornar nada! Se você trocar o retorno do método de String para void e apagar a linha do return, seu método fara o que você precisa e compilará!

Agora vamos para o seu método de saque e deposito. Eles estão uma confusão, você declarou que ao depositar um valor a função depositar retorna um float? Isso não foi pedido no enunciado, pelo contrário, foi pedido que fosse recebido um valor e nao retornado. Olha como fica:

float sacar(){		//Aqui você sequer está recebendo quanto tem que ser sacado
	float sacar = saldo - sacar;	//Aqui dá pau pois você está calculando com sacar que nem existe ainda...
	if (sacar<=saldo);				//Aqui seu if nao fez nada
	float saldo = sacar;
	return saldo;
}

void sacar(float valorSaque){
	if((saldo-valorSaque)<0){
		System.out.println("Saldo insuficiente!");
		return;	//sai do metodo sem sacar
	}
	saldo= saldo - valorSaque;
	System.out.println("Saque efetuado com sucesso!");
}

Com depósito é semelhante…

Você precisa dar uma estudada em algo mais básico se você está com dificuldades nisso…

[code]public class Conta {
String nomecliente;
int conta;
float saldo;

public static void main(String args[]){
}
void entraDados(String contanomecliente, int contaconta, float contasaldo){
nomecliente = contanomecliente;
conta = contaconta;
saldo = contasaldo;

this.nomecliente = "João";
this.conta = 2758-9;
this.saldo = 1000;

}

void imprimirConta(){
System.out.println("Nome do cliente: " + nomecliente);
System.out.println("Número da conta: " + conta);
System.out.println("Saldo: " + “R$” + saldo);
}

void sacar(float valorSaque){
if ((saldo-valorSaque)<1000){
System.out.println(“Saque Efetuado”);}
if((saldo-valorSaque)>1000){
System.out.println(“Saldo Insuficiente”);
}
}

void depositar(float valorDeposito){
if (valorDeposito>1){
System.out.println(“Valor Depositado”);}
if (valorDeposito==0){
System.out.println(“Valor Insuficiente”);}
}
}
[/code]

Dessa vez compilou, mas o método imprimirConta não está funcionando. Só falta ele. Abraços e desculpem a minha noobisse no programa.
OBS: Desculpem, eu me esqueci do code, não farei denovo e obrigado pelo aviso.

Jorge…
POR FAVOR, te imploro!!!
Coloque seu código dentro das TAGS CODE!!!
Ex.:

System.out.println("Assim que se faz!");

É só editar os posts que você já fez.
Facilitaria muito nossa vida!

[code]float saldo;

//Você está se confundindo muito, então apague o método main!!!
//public static void main(String args[]){
//}
void entraDados(String contanomecliente, int contaconta, float contasaldo){
nomecliente = contanomecliente;
conta = contaconta;
saldo = contasaldo;

//Você não precisa disso aqui em baixo…
//Você já está recebendo os valores no entraDados!!!
//this.nomecliente = “João”;
//this.conta = 2758-9;
//this.saldo = 1000;
}

void imprimirConta(){
System.out.println("Nome do cliente: " + nomecliente);
System.out.println("Número da conta: " + conta);
System.out.println("Saldo: " + “R$” + saldo);
}

void sacar(float valorSaque){
if ((saldo-valorSaque)<=0){
System.out.println(“Saque Efetuado”);}
else{
System.out.println(“Saldo Insuficiente”);
}
}

void depositar(float valorDeposito){
if (valorDeposito>0){
System.out.println(“Valor Depositado”);}
if (valorDeposito<=0){
System.out.println(“Valor Insuficiente”);}
}[/code]

Você NÃO vai colocar valor nenhum nessa classe… ela tem que servir para qualquer valor!!
Vamos criar OUTRA classe que utilizará sua classe Conta. (Tem que ser na mesma pasta).
Ex.:

[code]public class principal{
public static void main(String args[]){
Conta c = new Conta();

	c.entraDados("Joao", 27589, 1000);
	c.sacar(34.5f);
	c.depositar(100);
	c.imprimirConta();
}

}[/code]

Seus métodos só vão funcionar quando você instanciar um objeto da sua classe e utilizar o método do objeto!
Estude essa apostila para entender como funciona orientação a objetos que você melhora rapidinho!

Obrigado, agora as coisas ficaram mais claras.
É a primeira vez que tento fazer um tipo de classe assim. As últimas eu apenas fazia a classe base e a de teste, instanciando nomes, cores e outras coisas nos atributos e imprimindo na tela. Noção realmente conta aqui.
Muito obrigado