Uma ajudinha num pequeno programa

8 respostas
madlinux

Tá dando um erro, e eu não consigo saber o que é. Pra não perder a lógica do aprendizado, gostaria que me apontassem.

O programinha é esse:

class meuobjeto {

String nome;

int idade;

String telefone;

meuobjeto amigo= new meuobjeto();

amigo.idade=12;

amigo.nome=“Joao”;

amigo.telefone=“24050660”;

public void aniversario(){

idade=idade+1;

}



Basicamente, é  pra depois imprimir a idade e a nova idade do amigo no final. Mas antes de eu inserir isso,  os erros a seguir. O que posso fazer?

<a href="http://img105.imageshack.us/img105/9072/java1kn5.jpg" data-bbcode="true">http://img105.imageshack.us/img105/9072/java1kn5.jpg</a>

8 Respostas

cassio

Vc não pode associar valores à atributos de uma classe dentro do corpo da mesma mas fora de um método. Fora do escopo de um método válido vc pode SOMENTE declarar atributos.

seu código:

amigo.idade=12;
amigo.nome="Joao";
amigo.telefone="24050660";

Como PODERIA ser:

public void initializeAmigo(){
    amigo.idade=12;
    amigo.nome="Joao";
    amigo.telefone="24050660"; 
}
rodolfodev

Cara para você setar valore em um objeto é melhor criar os métodos getters e setter. assim:

public class meuobjeto {
	 
	private String nome; 
	private int idade; 
	private String telefone;

	public int getIdade() {
		return idade;
	}
	public void setIdade(int idade) {
		this.idade = idade;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
			
}

depois você instancia o objeto meuObjeto

meuobjeto amigo= new meuobjeto();

e para setar valores ao objeto use

amigo.setNome("Joao");

e assim por diante.

É isso que queira fazer?

silva.fernandes

Notei q vc está instanciando seu objeto como se vc estivesse em um método static.

E para sua "aplicativo" rodar ele necessita do método main.

Ficando assim:

public class MeuObjeto {

	String nome;

	int idade;

	String telefone;

	public void aniversario() {
		idade += 1;
	}

	public static void main(String[] args) {
		MeuObjeto amigo = new MeuObjeto();
		amigo.idade = 12;
		amigo.nome = "Joao";
		amigo.telefone = "24050660";
	}

}

OK ... ai sim .. ele iria compilar perfeitamente

Falowww

T+

LPJava

so nao entendi pq vc fez amigo.idade = 12.
e tenho quase certeza que isso nao é permitido para atributos dentro da class… vc poderia fazer isso usando metodo… seria mais elegante se vc usar metodos para acessar esses atributos, atraves do objeto da classe assim:

public void setIdade(int id){
idade = id
}

public int getIdade(){
return idade;}
//na class  principal
objeto.setIdade(12);
System.out.println("idade" + objeto.getIdade());

:smiley:

madlinux

Ok, na verdade estou me guiando pelas instruções de uma dessas apostilas genéricas da net. As instruções são falhas.

Vou seguir as idéias de vocês e depois retorno.

madlinux

Bem, me parece que o que a apostila tinha em mente foi o exemplo dado pelo silva.fernandes. Que funcionou perfeitamente. Agradeço a todos pelos exemplos. E vou testar todos.

Té +.

fabio.nascimento

Pega aí :

public class MeuObjeto 
{
    private static String nome;
    private static int idade;
    private static String telefone;
    
    public static void main(String args[])
    {
        MeuObjeto amigo= new MeuObjeto();
        amigo.idade=12;
        amigo.nome="Joao";
        amigo.telefone="24050660";        
        System.out.println ("Idade antiga = " + idade);
        amigo.idade = MeuObjeto.Aniversario();
        System.out.println ("Idade nova = " + idade);
    }    
    public static int Aniversario()
    {
        idade=idade+1;
        return idade;
    }
    
}

Té +

Fabio Nascimento

madlinux

Opa! Fábio, na apostila frisa que esse procedimento aniversário não precisaria ser com o ‘return’. Você acha que assim com o ‘static’ e o ‘return’ fica melhor?

Criado 27 de dezembro de 2006
Ultima resposta 27 de dez. de 2006
Respostas 8
Participantes 6