Como eu faço esse código usando String ?

 package Meuscodigos;

import java.io.*;

class Semaforo{

public int estadoCorrente;

public void recebeEstadoCorrente( int estado){

estadoCorrente=estado;

if( estadoCorrente==1){

System.out.println("verde");

}else if(estadoCorrente==2){

System.out.println("amarelo");

}else if(estadoCorrente==3){

System.out.println("vermelho");

}

}

public static void main(String [] args){
Semaforo objeto;
objeto = new Semaforo();

objeto.recebeEstadoCorrente(1);
}
}

Quero fazer esse código sem ter que usar If e else, só quero escrever vermelho lá no parametro e quero que saia a frase vermelho.

Meu mano, no título você pergunta como faz usando String, depois no final você quer sem usar if e else, e depois escrevendo vermelho??? Primeiro de tudo, formate seu código usando 4 espaços antes de inserí-lo, depois, esclareça sua dúvida de um modo que a gente consiga entender, pq se não, ninguém vai conseguir te ajudar amigo.

eu queria que funcionasse assim:

objeto.recebeEstadoCorrente(“vermelho”)

ao invés de objeto.recebeEstadoCorrente(1)

Não sei se é bem isso que você quer…

public void recebeEstadoCorrente( String estado){

if( estado==“Vermelho”)

Quero fazer um método que receba uma string e não um inteiro, é isso que quero dizer

Da forma que mostrei anteriormente você ta recebendo uma String.

E pode fazer isso em java? pensei que String em java fosse uma classe e não um tipo

Em C você utiliza char[100] para simular uma String, em java você pode utilizar a String normalmente. Só lembre de começar com a letra maiúscula, se não, não funciona.

pode fazer isso???

package Meuscodigos;

import java.io.*;

class Semaforo{

public int estadoCorrente;

public void recebeEstadoCorrente( String[] estado){

recebeEstadoCorrente = estado;

System.out.println(recebeEstadoCorrente);

}

public static void main(String [] args){
Semaforo objeto;
objeto = new Semaforo();

objeto.recebeEstadoCorrente("vermelho");


}


}

Se o parâmetro do seu método receber uma String, sim. Funciona perfeitamente.

Qual é a funcionalidade desse método?

public void recebeEstadoCorrente( String[] estado){

recebeEstadoCorrente = estado;

System.out.println(recebeEstadoCorrente);

}

Poderia ficar assim também:

public String recebeEstadoCorrente(String estado){
    estadoCorrente = estado;
    return estadoCorrente;
}

Usar println em um método pode ser considerada uma má prática de programação. Tente retornar o valor e printar onde ele foi chamado.

É que eu estou seguindo o exemplo do professor. Eu nem sei java. Eu só sei linguagem c de algorítimos. O professor inventou de dar Estrutura de Dados em java, sendo que ngm da turma estudou java :frowning:

Eu só estou seguindo o exemplo do professor msm.

Muito obrigado Funcionou aqui

1 curtida

Receber o Estado corrente do semáforo(vermelho, verde ou amarelo).

Talvez vc esteja estranhando o que eu estou fazendo, mas é pq eu sou inciante, estou aprendendo a usar os métodos ainda.

Acho que você não precisa mais, mesmo assim eu fiz aqui.

public static void main(String[] args) {
	Semaforo s = new Semaforo(); //cria um semáforo
	System.out.println(s.recebeEstadoCorrente("vermelho")); //imprime vermelho
	System.out.println(s.recebeEstadoCorrente("verde")); //imprime verde
	System.out.println(s.recebeEstadoCorrente("amarelo")); //imprime amarelo
}

public String recebeEstadoCorrente(String estado) {
	if (estado.equalsIgnoreCase("vermelho")) //se for vermelho
		return "vermelho"; //retorna o valor vermelho
	else if (estado.equalsIgnoreCase("verde")) //senão, se for verde
		return "verde"; //retorna o valor verde
	else if (estado.equalsIgnoreCase("amarelo")) //senão, se for amarelo
		return "amarelo"; //retorna o valor amarelo
	else //se não for nenhuma dessas
		return null; //retorna nulo
}

Você também poderia fazer assim:

public static void main(String[] args) {
	Semaforo s = new Semaforo();
	s.recebeEstadoCorrente("vermelho");
	s.recebeEstadoCorrente("verde");
	s.recebeEstadoCorrente("amarelo");
}

public void recebeEstadoCorrente(String estado) {
	if (estado.equalsIgnoreCase("vermelho"))
		System.out.println("Vermelho");
	else if (estado.equalsIgnoreCase("verde"))
		System.out.println("Verde");
	else if (estado.equalsIgnoreCase("amarelo"))
		System.out.println("Amarelo");
}

Tem outros modos de fazer também, por exemplo iniciando no construtor:

String estado; //atributo da minha classe

public static void main(String[] args) {
	Semaforo s = new Semaforo("vermelho"); //cria um semáforo com o estado em vermelho
	System.out.println("Estado: " + s.estado); //imprime Estado: vermelho
	s.setEstado("verde"); //coloca o estado como verde
	System.out.println("Estado: " + s.estado); //imprime Estado: verde
}

public Semaforo(String estado) { //construtor da classe Semaforo
	this.estado = estado; //inicia a variável estado do objeto(this.estado) com um estado(estado)
}

public void setEstado(String estado) { //método para mudar o estado
	this.estado = estado; //muda o estado do objeto(this.estado) para um novo estado(estado)
}

Enfim, existem diversas formas de fazer isso. Recomendo estudar um pouco sobre isso. Aqui alguns vídeos que podem te ajudar:

Construtor
Getters e Setters
Métodos com retorno
Métodos com parâmetros
Conceitos básicos de POO