rodriguesabner 15 de out. de 2019 1 like
vc está tentando chamar variáveis não estáticas dentro de um método estático. Vc pode atribuir o static nelas:
Ou fazer criar um método não estático e chama-lo dentro do public static void main
import java.util.Scanner ;
public class Main {
Scanner sc = new Scanner ( System . in );
String comando = sc . nextLine ();
Lampada lampada = new Lampada ();
private void setAcao () {
System . out . println ( "\n\n Comando 'ligar' lampada ou 'desligar' lampada.\n\n" );
switch ( comando ) {
case "ligar" :
if ( comando . equals ( "ligar" )) {
lampada . isLigada ();
lampada . setLigada ( true );
System . out . println ( "\n\n lampada ligada." );
}
break ;
case "desligar" :
if ( comando . equals ( "desligar" )) {
lampada . setLigada ( false );
System . out . println ( "\n\n lampada desligada." );
}
break ;
}
}
public static void main ( String [] args ) {
new Main (). setAcao ();
}
}
111aaa 15 de out. de 2019
Deu erro
Main.java:20: error: non-static variable lampada cannot be referenced from a static context if(comando.equals(“ligar”)){lampada.isDesligada();lampada.setLigada(fal
se); System.out.println("\n\n lampada desligada."); }
^
O q é esse erro?
rodriguesabner 15 de out. de 2019 1 like
Vc copiou e colou?
error : non - static variable lampada cannot be referenced from a static context
ta falando que a variavel lampada nao pode ser referenciada em um contexto estático, exatamente o q eu estava te explicando acima.
Mostra como vc colou aí
111aaa 15 de out. de 2019
Sim, verdade. Mas, já mudei para para o contexto estático, mas não funciona.
rodriguesabner 15 de out. de 2019 1 like
pq nao funciona? oq acontece? manda código, manda erro
111aaa 15 de out. de 2019
111aaa 15 de out. de 2019
Main . java : 20 : error : non - static variable comando cannot be referenced from a sta
tic context
if ( comando . equals ( “ ligar ” )){ lampada . isDesligada (); lampada . setLigada ( fal
se ); System . out . println ( " \n\n lampada desligada." ); }
^
Main . java : 20 : error : non - static variable lampada cannot be referenced from a sta
tic context
if ( comando . equals ( “ ligar ” )){ lampada . isDesligada (); lampada . setLigada ( fal
se ); System . out . println ( " \n\n lampada desligada." ); }
^
Main . java : 20 : error : cannot find symbol
if ( comando . equals ( “ ligar ” )){ lampada . isDesligada (); lampada . setLigada ( fal
se ); System . out . println ( " \n\n lampada desligada." ); }
^
symbol : method isDesligada ()
location : variable lampada of type Lampada
Main . java : 20 : error : non - static variable lampada cannot be referenced from a sta
tic context
if ( comando . equals ( “ ligar ” )){ lampada . isDesligada (); lampada . setLigada ( fal
se ); System . out . println ( " \n\n lampada desligada." ); }
^
8 errors
Lampada.java
public class Lampada {
private static boolean ligada = true ;
// Métodos acessores e modificadores
public static void setLigada ( boolean alteraEstado ){
if ( isLigada () != alteraEstado )
this . ligada = alteraEstado ;
}
public static boolean isLigada (){
return ligada ;
}
}
Main.java
import java.util.Scanner ;
public class Main {
public static void main ( String [] args ) {
new Main (). setAcao ();
Scanner sc = new Scanner ( System . in );
String comando = sc . nextLine ();
Lampada lampada = new Lampada ();
private static void setAcao () {
System . out . println ( "\n\n Comando 'ligar' lampada ou 'desligar' lampada.\n\n" );
switch ( comando ) {
case "ligar" :
if ( comando . equals ( "ligar" )) {
lampada . isLigada ();
lampada . setLigada ( true );
System . out . println ( "\n\n lampada ligada." );
}
break ;
case "desligar" :
if ( comando . equals ( "desligar" )) {
lampada . setLigada ( false );
System . out . println ( "\n\n lampada desligada." );
}
break ;
}
}
}
}
rodriguesabner 15 de out. de 2019 1 like
é que vc colocou tudo dentro do public static void main, pode copiar e colar do jeito que eu mandei aqui.
public class Main {
Scanner sc = new Scanner ( System . in );
String comando = sc . nextLine ();
Lampada lampada = new Lampada ();
public static void main ( String [] args ) {
new Main (). setAcao ();
}
private void setAcao () {
System . out . println ( "\n\n Comando 'ligar' lampada ou 'desligar' lampada.\n\n" );
switch ( comando ) {
case "ligar" :
if ( comando . equals ( "ligar" )) {
lampada . isLigada ();
lampada . setLigada ( true );
System . out . println ( "\n\n lampada ligada." );
}
break ;
case "desligar" :
if ( comando . equals ( "desligar" )) {
lampada . setLigada ( false );
System . out . println ( "\n\n lampada desligada." );
}
break ;
}
}
}
111aaa 15 de out. de 2019
Olha isso
111aaa 15 de out. de 2019
Fiz diferente
public class Main {
Scanner sc = new Scanner ( System . in );
String comando = sc . nextLine ();
Lampada lampada = new Lampada ();
public static void main ( String [] args ) {
new Main (). Resultado ();
}
private void Resultado () {
System . out . println ( "\n\n Comando 'ligar' lampada ou 'desligar' lampada.\n\n" );
switch ( comando ) {
case "ligar" :
if ( comando . equals ( "ligar" )) {
lampada . isLigada ();
lampada . setLigada ( true );
System . out . println ( "\n\n lampada ligada." );
}
break ;
case "desligar" :
if ( comando . equals ( "desligar" )) {
lampada . setLigada ( false );
System . out . println ( "\n\n lampada desligada." );
}
break ;
}
}
}
111aaa 15 de out. de 2019
Na class Lampada fiz
public class Lampada {
private boolean ligada = true ;
private boolean desligada = false ;
// Métodos acessores e modificadores
public void Ligada ( boolean alteraEstado ){
if ( Ligada () != alteraEstado )
this . ligada = alteraEstado ;
}
public void Desligada ( boolean alteraEstado ){
if ( Desligada () != alteraEstado )
this . desligada = alteraEstado ;
}
public boolean Ligada (){
return ligada ;
}
public boolean Desligada (){
return desligada ;
}
}
public class Main {
Scanner sc = new Scanner ( System . in );
String comando = sc . nextLine ();
Lampada lampada = new Lampada ();
public static void main ( String [] args ) {
new Main (). Resultado ();
}
private void Resultado () {
System . out . println ( "\n\n Comando 'ligar' lampada ou 'desligar' lampada.\n\n" );
switch ( comando ) {
case "ligar" :
if ( comando . equals ( "ligar" )) {
// lampada.Ligada();
lampada . setLigada ( true );
System . out . println ( "\n\n lampada ligada." );
}
break ;
case "desligar" :
if ( comando . equals ( "desligar" )) {
lampada . setDesligada ( false );
System . out . println ( "\n\n lampada desligada." );
}
break ;
}
}
}
111aaa 15 de out. de 2019
error : cannot find symbol
Scanner sc = new Scanner ( System . in );
symbol : class Lampada
location : class Main
error : cannot find symbol : Lampada lampada = new Lampada ();
O que significa isso?
111aaa 15 de out. de 2019
Outros erros
main . java : 3 : error : expected
Scanner sc = new static Scanner ( System . in );
^
ain . java : 3 : error : ‘ ( ’ or ‘ [ ’ expected
Scanner sc = new static Scanner ( System . in );
^
ain . java : 3 : error : ‘ ; ’ expected
Scanner sc = new static Scanner ( System . in );
^
ain . java : 3 : error : illegal start of type
Scanner sc = new static Scanner ( System . in );
^
ain . java : 3 : error : ‘ ; ’ expected
Scanner sc = new static Scanner ( System . in );
^
ain . java : 3 : error : expected
Scanner sc = new static Scanner ( System . in );
^
rodriguesabner 15 de out. de 2019 1 like
Acabei dormindo… Me deixa perguntar, pq vc não usa uma ide?
staroski 15 de out. de 2019 1 like
Não tem que mudar nada pra estático.
Adicionou complexidade desnecessária.
Veja o exemplo abaixo:
Classe Lampada:
public class Lampada {
private boolean ligada = true ;
/*
* Métodos acessores e modificadores
*/
public void setLigada ( boolean alteraEstado ) {
this . ligada = alteraEstado ;
}
public boolean isLigada () {
return ligada ;
}
}
Classe Main
import java.io.PrintStream ;
import java.util.Scanner ;
public class Main {
private static final PrintStream saida = System . out ;
private static final Scanner estrada = new Scanner ( System . in );
public static void main ( String [] args ) {
Main programa = new Main ();
programa . executar ();
}
public void executar () {
Lampada lampada = new Lampada ();
saida . println ( "\n\n Comando 'ligar' lampada ou 'desligar' lampada.\n\n" );
String comando = estrada . nextLine ();
switch ( comando ) {
case "ligar" :
lampada . setLigada ( true );
break ;
case "desligar" :
lampada . setLigada ( false );
break ;
}
if ( lampada . isLigada ()) {
saida . println ( "\n\n lampada ligada." );
} else {
saida . println ( "\n\n lampada desligada." );
}
}
}
Lucas_Camara 15 de out. de 2019 2 likes
Tem muita coisa que pode ser melhorada no seu código:
Faça identação correta do código. Isso ajuda a entender mais rápido e é uma boa prática;
Não acho que a classe Lampada precise de dois atributos para representar o estado da lâmpada (ligado e desligado). Acredito que apenas um atributo resolveria;
Ao ligar e desligar a lâmpada, acho desnecessário esses IFs . Basta simplesmente ligar e desligar;
Não achei o comando que lê a entrada do usuário usando a classe Scanner ;
No switch , dentro de cada case , é desnecessário a verificação do comando usando equals , sendo que já é tratado pelo switch .
Bom, montei um exemplo simples aqui, dê uma olhada e sinta-se a vontade para melhorá-lo:
Lampada
public class Lampada {
private boolean ligada ;
public Lampada () {
super ();
}
public void ligar () {
ligada = true ;
}
public void desligar () {
ligada = false ;
}
public boolean isLigada () {
return ligada ;
}
}
Main
public class MainLampada {
public static void main ( String [] args ) {
Scanner scanner = new Scanner ( System . in );
Lampada lampada = new Lampada ();
System . out . println ( "Comando 'ligar' lampada ou 'desligar' lampada:" );
String comando = scanner . nextLine ();
switch ( comando ) {
case "ligar" :
lampada . ligar ();
System . out . println ( "Lâmpada ligada." );
break ;
case "desligar" :
lampada . desligar ();
System . out . println ( "Lâmpada desligada." );
break ;
}
scanner . close ();
}
}
111aaa 16 de out. de 2019
Não funciona
111aaa 16 de out. de 2019
Não funciona esse código
111aaa 16 de out. de 2019
Creio que a IDE não ajuda muito iniciantes
Lucas_Camara 16 de out. de 2019 1 like
Rodei aqui e funcionou de boa. Qual problema está aparecendo pra vc?
javaflex 16 de out. de 2019
Muito pelo contrário. Se tivesse debugando em uma IDE teria mais facilidade pra resolver esses problemas sozinho.
111aaa 16 de out. de 2019
Acho que pela minha dificuldade, ela não está me ajudando muito
111aaa 16 de out. de 2019
Lucas_Camara 16 de out. de 2019
Como vc está rodando o código?
111aaa 16 de out. de 2019
javac Main.java
java Main
Lucas_Camara 16 de out. de 2019
Qual o nome do arquivo java onde vc colocou esse código?
111aaa 16 de out. de 2019
staroski 16 de out. de 2019 1 like
Então tem 3 possibilidades:
Você copiou errado;
Você não compilou;
Você não sabe executar.
staroski 16 de out. de 2019 1 like
O erro do compilador está dizendo que você chamou a classe de MainLampada:
Main . java : 1 : error : class MainLampada is public , should be declared in a file named MainLampada . java
111aaa 19 de out. de 2019
Ah
111aaa 19 de out. de 2019
Resolvi, era problema no cmd.exe