Um programa que NÃO insere valores nas variáveis

public class Automovel {
private String modelo, cor;
private int ano;
private boolean estadoMotor;

    public void setmodelo(String modelo){
        this.modelo = modelo;
    }
    
    public void setcor(String cor){
        this.cor = cor;
    }
    
    public String getmodelo(){
        return this.modelo;
    }
    
    public void setano(int ano){
        this.ano = ano;
    }
    
    public int getano(){
        return this.ano;
    }
    
    public boolean getestadoMotor(){
        return estadoMotor;
    }
    
    public String getcor(){
        return this.cor;
    }
    
    public void ligaMotor(){
        this.estadoMotor = true;
    }
    
    public void desligaMotor(){
        this.estadoMotor = false;
    }
    
    public void clear() {
        for(int i=0;i<100;i++)
            System.out.println("");
    }
    

public static void main(String[] args) throws IOException {
    int op, ano;
    String modelo, cor;
    do {
    Automovel aut = new Automovel();
    System.out.println("-----------------------------");
    System.out.println("-   Sistema de Automóveis   -");
    System.out.println("- Selecione uma opção:      -");
    System.out.println("- 1 - Adicionar Modelo;     -");
    System.out.println("- 2 - Adicionar Cor;        -");
    System.out.println("- 3 - Adicionar Ano;        -");
    System.out.println("- 4 - Ligar Motor;          -");
    System.out.println("- 5 - Desligar Motor;       -");
    System.out.println("- 6 - Descrição do Carro;   -");
    System.out.println("- 7 - Sair                  -");
    System.out.println("-----------------------------");
    Scanner scan = new Scanner(System.in);
    op = scan.nextInt();
    
    switch(op){
        case 1: 
            aut.clear();                
            System.out.print("Digite o nome do automóvel: ");
            BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
            modelo = input.readLine();
            aut.setmodelo(modelo);
            break;
        case 2:
            aut.clear();                
            System.out.print("Digite a cor do automóvel: ");
            cor = scan.nextLine();
            aut.setcor(cor);
            break;
        case 3:
            aut.clear();
            System.out.print("Digite o ano do automóvel: ");
            ano = scan.nextInt();
            aut.setano(ano);
            break;
        case 4:
            aut.clear();
            if(aut.getestadoMotor() == true)
                System.out.print("Atenção! O motor já está ligado!");
            else{
                aut.ligaMotor();
                System.out.print("Motor ligado com sucesso!");
            }
            break;
        case 5:
            aut.clear();
            if(aut.getestadoMotor() == false)
                System.out.print("Atenção! O motor já está desligado!");
            else {
                aut.desligaMotor();
                System.out.print("Motor desligado com sucesso!");
            }
            break;
        case 6:
            aut.clear();
            System.out.println("Nome do veículo: " + aut.getmodelo());
            System.out.println("Cor do veículo: " + aut.getcor());
            System.out.println("Ano do veículo: " + aut.getano());
            if(aut.getestadoMotor() == true)
                System.out.println("O motor do veículo está ligado.");
            else
                System.out.println("O motor do veículo está desligado.");
            break;
        default:
            aut.clear();
            System.out.println("Opção Inválida!");
            break;
    }
    }while(op != 7);
}

}

Basicamente, é um programa simples, só pra eu aprender como funciona os métodos Set e Get. Porém, quando escolho a opção 6 (que no caso é para exibir os resultados), os valores das variáveis estão Nulos! Como se não tivessem sido alterados ou a programação para exibir está errada. Toda ajuda é bem-vinda!

Edit:

E esse é como ficou o programa (só não descobri uma maneira de fazer com que o scan.next() no final de cada switch case só não precisasse digitar nada, só teclava Enter o programa já voltava pro menu):

public class Automovel {
    private String modelo, cor;
    private int ano;
    private boolean estadoMotor;
    
    public void setmodelo(String modelo){
        this.modelo = modelo;
    }
    
    public void setcor(String cor){
        this.cor = cor;
    }
    
    public String getmodelo(){
        return this.modelo;
    }
    
    public void setano(int ano){
        this.ano = ano;
    }
    
    public int getano(){
        return this.ano;
    }
    
    public boolean getestadoMotor(){
        return estadoMotor;
    }
    
    public String getcor(){
        return this.cor;
    }
    
    public void ligaMotor(){
        this.estadoMotor = true;
    }
    
    public void desligaMotor(){
        this.estadoMotor = false;
    }
    
    public void clear() {
        for(int i=0;i<100;i++)
            System.out.println("");
    }
    

public static void main(String[] args) throws IOException {
    int op, ano;
    String modelo, cor;
    Automovel aut = new Automovel();
    do {        
    System.out.println("-----------------------------");
    System.out.println("-   Sistema de Automóveis   -");
    System.out.println("- Selecione uma opção:      -");
    System.out.println("- 1 - Adicionar Modelo;     -");
    System.out.println("- 2 - Adicionar Cor;        -");
    System.out.println("- 3 - Adicionar Ano;        -");
    System.out.println("- 4 - Ligar Motor;          -");
    System.out.println("- 5 - Desligar Motor;       -");
    System.out.println("- 6 - Descrição do Carro;   -");
    System.out.println("- 7 - Sair                  -");
    System.out.println("-----------------------------");
    Scanner scan = new Scanner(System.in);
    op = scan.nextInt();
    
    switch(op){
        case 1: 
            aut.clear();                
            System.out.print("Digite o nome do automóvel: ");
            modelo = scan.next();
            aut.setmodelo(modelo);
            scan.nextLine();
            aut.clear();
            break;
        case 2:
            aut.clear();                
            System.out.print("Digite a cor do automóvel: ");
            cor = scan.next();
            aut.setcor(cor);                
            scan.nextLine();
            aut.clear();
            break;
        case 3:
            aut.clear();
            System.out.println("Digite o ano do automóvel: ");
            ano = scan.nextInt();
            aut.setano(ano);
            scan.nextLine();
            aut.clear();
            break;
        case 4:
            aut.clear();
            if(aut.getestadoMotor() == true)
                System.out.println("Atenção! O motor já está ligado!");
            else{
                aut.ligaMotor();
                System.out.println("Motor ligado com sucesso!");
            }
            System.out.println("Digite qualquer coisa e aperte Enter para continuar: ");
            scan.next();
            aut.clear();
            break;
        case 5:
            aut.clear();
            if(aut.getestadoMotor() == false)
                System.out.println("Atenção! O motor já está desligado!");
            else {
                aut.desligaMotor();
                System.out.println("Motor desligado com sucesso!");
            }
            System.out.println("Digite qualquer coisa e aperte Enter para continuar: ");
            scan.next();
            aut.clear();
            break;
        case 6:
            aut.clear();
            System.out.println("Nome do veículo: " + aut.getmodelo());
            System.out.println("Cor do veículo: " + aut.getcor());
            System.out.println("Ano do veículo: " + aut.getano());
            if(aut.getestadoMotor() == true)
                System.out.println("O motor do veículo está ligado.");
            else
                System.out.println("O motor do veículo está desligado.");
            System.out.println("Digite qualquer coisa e aperte Enter para continuar: ");
            scan.next();
            aut.clear();
            break;
        case 7:
            aut.clear();
            System.out.println("Tchau!");
            break;
        default:
            aut.clear();
            System.out.println("Opção Inválida!");
            System.out.println("Digite qualquer coisa e aperte Enter para continuar: ");
            scan.next();
            aut.clear();
            break;
    }
    }while(op != 7);
}

}

Cada vez que você retorna ao menu, você “zera” (limpa) o objeto.
Coloque a linha onde o automóvel é declarado antes do do {

1 curtida

Antes de qualquer coisa: não estou reclamando.

Mas ultimamente tem uma galera com esse exercício do veículo, é a galera da mesma sala de novo?

Não sei, na real é um exercício da Estácio. Talvez todo mundo veio tirar dúvidas no mesmo lugar, só isso!

1 curtida

Valeu cara!
Muitas vezes eu faço o programa, dá um erro, só que não encontro o problema! Daí dou uma volta, vejo outra coisa, e quando volto, encontro! Mas dessa vez foi muito mais rápido, graças a você!
Obrigado!

O nosso cérebro tem capacidades incríveis e, algumas, meio doidas mesmo.
Essa é uma situação corriqueira e vai acontecer muitas outras vezes.