**Porque meu programa não funciona ?**

7 respostas
java
1

Boa noite pessoal,
alguém poderia me ajudar a chegar em alguma solução desse problema? Porque meu programa não funciona ? estou tentando fazer dois comandos para ligar e desligar a lampada usando case, mas á erro :smiley:

import java.util.Scanner;
  
    public class Main {
    public static void main(String[] args){
    
    String comando = "ligar";
    Scanner sc = new Scanner(System.in);

    Lampada lampada = new Lampada();
    int estadoAtual; 

    System.out.print("Use o comando 'ligar' para ( ligar a lampada ) ou 'desligar' para ( desligar a lampada).");
    comando = sc.nextInt();
		
    switch (estadoAtual) {

		case 1:
		comando == "ligar"
		if(lampada.isLigada())
        if(comando.equals("ligar"))
		System.out.println("lampada ligada.");           
		lampada.setLigada(true);           
		break;

		case 2:
        comando == "desligar"
        if(comando.equals("desligar"))
        if(lampada.isDesligada())
        System.out.println("lampada desligada.");           
		lampada.setLigada(false);           
		break;

		default:
		System.out.println("lampada desligada.");
	    lampada.setLigada(false);           

      }
	}

7 Respostas

W

o comando = sc.nextInt(); não deveria ser sc.nextLine(); ? já que é pra pegar uma string como “ligar” ou “desligar”?
e o switch não deveria ser switch(estadoAtual){
case “ligar”:
case “desligar”:

1

à ?

import java.util.Scanner;
  
    public class Main {
    public static void main(String[] args){
    
    String comando = "ligar";
    Scanner sc = new Scanner(System.in);

    Lampada lampada = new Lampada();
    int estadoAtual; 

    System.out.print("Use o comando 'ligar' para ( ligar a lampada ) ou 'desligar' para ( desligar a lampada).");
    comando = sc.nextLine();
		
    switch (estadoAtual) {

		case 1: "ligar"
		if(lampada.isLigada())
        if(comando.equals("ligar"))
		System.out.println("lampada ligada.");           
		lampada.setLigada(true);           
		break;

		case 2: "desligar"
        if(comando.equals("desligar"))
        if(lampada.isDesligada())
        System.out.println("lampada desligada.");           
		lampada.setLigada(false);           
		break;

		default:
		System.out.println("lampada desligada.");
	    lampada.setLigada(false);           

      }
	}
1

Existe algo que posso fazer além disso? :smiley:

W

import java.util.Scanner;

public class Main {
public static void main(String[] args){

String comando = "ligar";
Scanner sc = new Scanner(System.in);

Lampada lampada = new Lampada();
int estadoAtual; 

System.out.print("Use o comando 'ligar' para ( ligar a lampada ) ou 'desligar' para ( desligar a lampada).");
comando = sc.nextLine();
	
switch (comando) {

	case "ligar": 
	if(lampada.isLigada())
    if(comando.equals("ligar"))
	System.out.println("lampada ligada.");           
	lampada.setLigada(true);           
	break;

	case "desligar": 
    if(comando.equals("desligar"))
    if(lampada.isDesligada())
    System.out.println("lampada desligada.");           
	lampada.setLigada(false);           
	break;

	default:
	System.out.println("lampada desligada.");
    lampada.setLigada(false);  
}
}
}

tente algo assim!

1

Valeu pela resposta

1

Existe um problema quando envio para a linha do comando ligar, a lampada fica desligada

import java.util.Scanner;
public class Main {
public static void main(String[] args){

String comando = "ligar";
Scanner sc = new Scanner(System.in);

Lampada lampada = new Lampada();
int estadoAtual; 

System.out.println("\n\n\nUse o comando 'ligar' para ( ligar a lampada ) ou 'desligar' para ( desligar a lampada).\n\n\n");
comando = sc.nextLine();
	
switch (comando) {

	case "ligar": 
	
    if(comando.equals("\n\n\n ligar"))
	// if(lampada.isLigada())
	System.out.println("\n\n\n lampada ligada.");           
	lampada.setLigada(true);           
	
	break;

	case "desligar": 
    
    if(comando.equals("\n\n\n desligar"))
    // if(lampada.isDesligada())
    System.out.println("\n\n\n lampada desligada.");           
	lampada.setLigada(true);           
	
	break;

	default:
	System.out.println("lampada desligada.");
    lampada.setLigada(false);  
}
}
}

pq esse erro ocorre?

1

pq esse erro ocorre?

Lampada.java

public class Lampada {
	private boolean ligada = false;
	
	/*
	* Métodos acessores e modificadores
	*/
	public void setLigada(boolean alteraEstado){
		if(isLigada() != alteraEstado)
			this.ligada = alteraEstado;
	}
	
	public boolean isLigada(){
		return ligada;
	}
}
Criado 14 de outubro de 2019
Ultima resposta 14 de out. de 2019
Respostas 7
Participantes 2