Variavel public na classe main.[RESOLVIDO]

2 respostas
chamuska

Pessoal, faz muito tempo que não programo em java e estou fazendo um código para relembrar um pouco!

Estou tendo um problema, pq na classe main tenho uma variavel public e não consigo usar ela nos metodos dessa classe.

O código esta assim:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package objcachorro;

import java.util.Scanner;

/**
 *
 * @author André
 */
public class ObjCachorro {

    public static Cachorro[] cachorros = new Cachorro[10];
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
        // TODO code application logic here
        menu();
        
        /*Cachorro cachorro;
        
        cachorro = new Cachorro();
        
        cachorro.setIdade(10);
        
        System.out.println(cachorro.getIdade()); */       
        
    }
    
    public static void menu()
    {
        String opcao = "";
        Scanner opc = new Scanner(System.in);
        
        // condições do menu
        do
        {
            System.out.println("(1) - Cadastrar cachorro");
            System.out.println("(2) - Excluir cachorro");
            System.out.println("(3) - Excluir tudo");
            System.out.println("(3) - Coisas de cachorro");
            System.out.println("(S) - Sair");
            opcao = opc.next();
            
            if(opcao.equals("1"))
            {
                addCachorro();
            }
            
        }while(!opcao.equals("S"));
    }
    
    public static void addCachorro()
    {

        this.cachorros[0].setCor('branco');
    }
}

O erro da na linha 61.
No netbeans a msgde erro é essa:
[color=red]non-static variable this cannot be referenced from a static context

unclosed character literal

not a statement

unclosed character literal

Acessando estático field cachorros[/color]

E ai, o que o newbie ta fazendo de errado ?!

Valeu!

2 Respostas

ViniGodoy

O this não pode ser usado em métodos estáticos. Método estáticos são métodos da classe, e não de um objeto. this significa "este objeto".
De maneira geral, evite usar static.

package objcachorro;

import java.util.Scanner;

public class ObjCachorro {

    private Cachorro[] cachorros = new Cachorro[10];
    

    public static void main(String[] args)  {
        ObjCachorro obj = new ObjCachorro();
        obj.menu();    
    }
    
    public void menu() {
        String opcao = "";
        Scanner opc = new Scanner(System.in);
        
        // condições do menu
        do {
            System.out.println("(1) - Cadastrar cachorro");
            System.out.println("(2) - Excluir cachorro");
            System.out.println("(3) - Excluir tudo");
            System.out.println("(3) - Coisas de cachorro");
            System.out.println("(S) - Sair");
            opcao = opc.nextLine();
            
            if(opcao.equals("1")) {
                addCachorro();
            }
            
        }while(!opcao.equalsIgnoreCase("S"));
    }
    
    public void addCachorro() {
        this.cachorros[0] = new Cachorro();
        this.cachorros[0].setCor('branco');
    }
}
chamuska

Nossa, q doido!
To acostumado com php, dai se eu não leio em algum lugar ou não explicarem eu não ia entender nunca Rsrsrsr!

Valeu pela ajuda cara, deu certo!

Flw!

Criado 26 de outubro de 2013
Ultima resposta 26 de out. de 2013
Respostas 2
Participantes 2