Estou começando a estudar JAVA, e fiquei com duvida em relação a comparação de Strings.
Segue o codigo:
package pkg05032018;
import java.util.Scanner; // Importar a biblioteca Scanner
public class SemaforoOld {
publicstaticvoidmain(String[]args){Stringsemaforo;Scannerscanner=newScanner(System.in);System.out.println("Verde");System.out.println("Amarelo");System.out.println("Vermelho");System.out.print("Informe a cor do semaforo: ");semaforo=scanner.toString();if(semaforo.equals("Verde")){System.out.println("A proxima cor será Amarela");}elseif(semaforo.equals("Amarelo")){System.out.println("A proxima cor será Vermelha");}elseif(semaforo.equals("Vermelho")){System.out.println("A proxima cor será Verde");}else{System.out.println("A cor não corresponde a nenhuma das tres opçoes");}}
Para não ficar cheio de if e else, pq não usa o switch case? Acho que fica melhor.
E tente inverter “vermelho”.equals(semaforo)
switch(operacao){case'+':System.out.printf("%.2f+%.2f=%.2f",numero1,numero2,numero1+numero2);break;case'-':System.out.printf("%.2f-%.2f=%.2f",numero1,numero2,numero1-numero2);break;case'*':System.out.printf("%.2f*%.2f=%.2f",numero1,numero2,numero1*numero2);break;case'/':System.out.printf("%.2f/%.2f=%.2f",numero1,numero2,numero1/numero2);break;default:System.out.printf("Você digitou uma operação inválida.");}
darlan_machado
String é um objeto e, devido a isso, precisa ser comparada utilizando o método equals, herdado da classe Object.
L
limassa
Comparar o valor digitado na variavel: semaforo.equals(“Verde”)
R
RodrigoBomba
O darlan deu a resposta acima, para comparar o conteudo de uma String usamos o .equals() porque String é um objeto e usamos == para comparar se a referencia de um objeto é a mesma, exemplo:
senão me engano ele é possível comparar as Strings e dar true da maneira que você citou porque quando criamos a String dessa forma String x = “a”, e String b = “a”, o java comparando num mesmo local(Que nesse momento não me recordo o nome) se ja existe uma String com o mesmo e vai considerar da mesma instancia se já existe uma String com aquele valor.
Se nesse mesmo exemplo ele alterar o valor de b para teste por exemplo vai dar false mas o == ainda esta comparando as referencias.
Para comparar conteúdo de String use sempre .equals()
L
limassa
Bom dia!
Desculpa a demora. Conseguir fazer com o equals. Agradeço ajuda.