Boolean sempre dando false

4 respostas
java
W

Boa noite. Estou com um problema no código e não sei dizer o porquê de isso estar acontecendo. O código sempre dá como false quando ele vai checar se é verdadeiro ou falso. Segue o código abaixo :

import java.util.Scanner;
public class Produto {

private String nome,check;

private double preço;

private int quantidadeEstoque;

//CONSTRUTOR
public Produto(String nome, double preço, int quantidadeEstoque) {

this.nome = nome;
this.preço = preço;
this.quantidadeEstoque = quantidadeEstoque;

}

//METODOS

public void verificarEstoque() {

Scanner ler = new Scanner(System.in);

System.out.println("Verificando estoque, digite o nome do produto: ");

check = ler.nextLine();

if (check == nome) {

System.out.println(true);

}

else{

System.out.println(false);

}

}
public String getNome() {

return nome;

}
public void setNome(String nome) {

this.nome = nome;

}
public String getCheck() {

return check;

}
public void setCheck(String check) {

this.check = check;

}
public double getPreço() {

return preço;

}
public void setPreço(double preço) {

this.preço = preço;

}
public int getQuantidadeEstoque() {

return quantidadeEstoque;

}
public void setQuantidadeEstoque(int quantidadeEstoque) {

this.quantidadeEstoque = quantidadeEstoque;

}

}

Essa é a primeira parte do código, a segunda vem em seguida:

public class Principal {

public static void main(String[] args) {

Pagamento p1 = new Pagamento(); //Esta linha é referente a outra classe, pode ser ignorada.
Produto pr1 = new Produto ("Chocolate",3.40,5); //Aqui é onde ocorre o problema, mesmo digitando ou copiandoo primeiro parametro
//sempre dá como falso

    pr1.verificarEstoque();
	p1.selecionarTipoPagamento();//referente a outra classe, pode ser ignorada
	p1.realizarPagamento(); //referente a outra classe, pode ser ignorada
}

}

Se alguém puder me explicar o porquê de estar dando esse erro eu agradeço.

4 Respostas

J

Strings são objetos, então a princípio quando você compara Strings usando “==” está comparando se elas são o mesmo objeto, não se possuem o mesmo conteúdo.

Use o método “equals()” para comparar Strings, exemplo: “nome.equals(check)”. Você pode usar “equalsIgnoreCase()” para não diferenciar maiúsculas e minúsculas.

W

Cara, resolveu meu problema e me fez entender facilmente, sensacional, muito obrigado! (Sou novo aqui, sou eu que devo fechar o tópico ou algum moderador faz isso?)

J

Não é necessário fechar o tópico.

L

@watcherxv Só marcar a resposta que te ajudou como Solução. (tem a opção nos botões na resposta que te ajudou)

Criado 5 de março de 2023
Ultima resposta 5 de mar. de 2023
Respostas 4
Participantes 3