"Inkompatible Operanden Datentypen int und string"
Ich gerade angefangen zu lernen, code (Java-spezifisch), und ich ' m Erprobung eines Passwort-system, wo, wenn Sie das Kennwort eingeben, es wird die variable "Passwort" und es prüft, um zu sehen, ob es gleich password2, das eigentliche Passwort. Hier ist der code:
import java.util.Scanner;
public class LogicalOperators {
public static void main(String args[]){
Scanner test = new Scanner(System.in);
int age;
int password;
String password2;
password2 = "Call of Duty";
System.out.println("Please enter your age:");
age = test.nextInt();
if (age >=18) {
System.out.println("You are old enough.");
System.out.println("Please enter the password:");
password = test.nextInt();
if (password == password2) {
System.out.println("Welcome back!");
}else{
System.out.println("The password you typed was incorrect.");
}
}else{
System.out.println("You are too young.");
}
}
}
Ich versuche zu prüfen, die in der verschachtelten if-Anweisung, ob das Passwort habe ich eingegeben abgestimmt password2, "Call of Duty", aber das problem ist, dass es funktioniert nicht mit strings. Der Titel dieser Frage ist die Fehlermeldung, die kommt. Kann mir bitte jemand helfen?
- Diese queston ist nicht geschlossen (dieser Begriff hat eine sehr spezielle Bedeutung, die auf SO). Wenn Ihre Frage beantwortet wurde, akzeptieren Sie einfach die Antwort, die Ihnen bisher am meisten geholfen.
- Um zu überprüfen, ob zwei Strings gleich sind müssen Sie die
.equals
Methode und nicht==
die Prüfungen für die Referenz. Auch Passwort ändern Typ auf String.
Du musst angemeldet sein, um einen Kommentar abzugeben.
beim vergleichen von Zeichenfolgen, die Sie verwenden sollten equals anstelle von ==
So verwenden
nextLine()
Methode können Sie die gesamte eingegebene Zeichenkette vom Benutzer zusammen mit den Räumen.Ich versuche einen Hinweis darauf zu geben, statt der vollen Antwort:
Überprüfen Sie die Datentypen der
password
undpassword2
. Warum sind Sie unterschiedlich?password
Typint
? Kann der Benutzer nur die Eingabe von zahlen?int
? Dann könnte der Benutzer immer nur zahlen eingeben als Passwort und das kann nicht immer gleich " zu "Call of Duty".Müssen Sie ein paar änderungen.
Ersten
password
sollte vom TypString
seit Sie speichern möchten, eine Zeichenfolge hier und vergleichen Sie es mit einem anderen string.Nächsten, nur nach
age = test.nextInt();
, sollten Sie einetest.nextLine()
zu konsumieren, der Zeilenumbruch am Ende der Eingabe. Wir wollen nicht, dieses zu Lesen, wenn wir Lesen, das Passwort.Nächsten, die Sie verwenden sollten
password = test.nextLine();
zu Lesen, das Passwort durch den Benutzer eingegeben werden.Schließlich sollten Sie vergleichen Sie es mit:
if (password.equals(password2))
.==
vergleicht, ob die beiden String-Objekte haben die gleichen Referenzen, D. H., ob Sie die gleiche String-Objekte, die als bekannt zu Java. Sie möchten.equals()
hier, weil es wäre zu vergleichen, ob die Inhalte der beiden String-Objekte gleich sind. In diesem Fallpassword
undpassword2
beziehen sich auf zwei verschiedene String-Objekte, die möglicherweise den gleichen Inhalt haben.age = test.nextInt();
sollten Sie einentest.nextLine()
zu konsumieren, der Zeilenumbruch am Ende der Eingabe. Wir wollen nicht, dieses zu Lesen, wenn wir Lesen, das Passwort."