La lecture et la vérification des chaînes à partir de la saisie de l'utilisateur
J'ai ce code:
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String answer = input.nextLine();
if(answer == "yes"){
System.out.println("Yea I programmed this right!");
}else{
System.out.println("Awww :(");
}
}
}
Mais quand je le lance et le type oui, il convient de dire
"Oui, j'ai programmé ce droit!"
mais il dit
"Awww 🙁"
Un
String
est un objet, pas une primitive.
OriginalL'auteur Cole | 2011-12-28
Vous devez vous connecter pour publier un commentaire.
Vous êtes de la comparaison de chaînes de manière incorrecte. Vous devez utiliser le
equals()
méthode, comme ceci:Lorsque vous êtes à la programmation en Java, l'opérateur
==
est généralement utilisé pour comparer les types de données primitifs (int
,double
, etc.). Si vous utilisez==
pour la comparaison de deux types d'objets (comme des chaînes de caractères), vous êtes en les comparant pour identité, qui est, en vérifiant si elles font référence au même objet en mémoire. Dans votre cas, ce que vous avez besoin est de comparer, si ils sont l'égalité des: si elles ont exactement la même valeur (une chaîne de caractères dans ce cas), même si ils sont deux objets différents - et pour cela vous devez utiliser laequals()
méthode.EDIT :
Encore mieux, pour la prévention d'une
NullPointerException
, il est considéré comme une bonne pratique retournement de l'ordre de la comparaison et de l'écriture d'abord la chaîne que vous êtes en comparant avec, comme ceci:L'explication est simple: si, pour une raison
answer
estnull
, le rapport ci-dessus permettra d'évaluer àfalse
(ce qui signifie:answer
n'est pas"yes"
), alors que la première version du code, serait la cause d'uneNullPointerException
lorsque vous essayez d'appeler leequals()
méthode sur unnull
valeur.d'accord, j'ai édité ma réponse.
OriginalL'auteur Óscar López
devrait être
(
==
n'est pas correct pourString
l'égalité, et nous traitons le cas oùanswer
est null)OriginalL'auteur Matthew Gilliard
Utilisation
String.equals()
au lieu de==
.En Java,
==
est de tester que les 2 Chaînes sont exactement de la même instance, où "a" != "un". Au lieu de cela, vous avez besoin de tester pour"a".equals("a")
.Donc remplacer
avec:
Noter que le retournement de l'ordre ici est intentionnel, car cela peut empêcher une NullPointerException si
answer
était nul comme"yes".equals(null)
renvoie simplement faux, au lieu de lancer une exception. (L'appel d'une opération surnull
jeter un NullPointerException, I. E.null.equals("yes")
.)OriginalL'auteur ziesemer
Modifier cette
La
equals()
méthode compare ce chaîne (réponse dans votre exemple) à l'objet spécifié. Le résultat est vrai si et seulement si l'argument n'est pas nulle et est un objet de type String qui représente la même séquence de caractères que cet objet.Il est important de comprendre que le
equals()
méthode et la==
opérateur d'effectuer deux opérations différentes. Comme vient de le mentionner, leequals()
méthode compare les caractères à l'intérieur d'un objet de type String. Le==
opérateur compare deux références de l'objet pour voir si elles se réfèrent à la même instance.OriginalL'auteur Lion
importer java.util.Scanner;
public class Exemple {
public static void main(String[] args) {
}
}
OriginalL'auteur ramesh
ou vous pouvez essayer d'utiliser "compareTo()" fonction
OriginalL'auteur merve