“不兼容的操作数类型int和字符串”

我刚刚开始学习代码(特别是Java),我正在测试一个密码系统,当你输入密码时,它变成变量“password”,它会检查它是否等于password2,即实际密码。 这是代码:

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."); } } } 

我正在尝试检查嵌套的if语句是否输入了匹配密码2的密码,“使命召唤”; 但问题是它不适用于字符串。 这个问题的标题是出现的错误。 有人可以帮帮我吗?

比较字符串时,你应该使用equals而不是==所以使用

 if(password.equals(password2){ do something } 

我尝试给出一个提示,而不是提供完整的答案:

检查passwordpassword2的数据类型。 他们为什么不同?

你必须做出一些改变。

第一个password应该是String类型,因为您希望在此处存储字符串并将其与另一个字符串进行比较。

接下来,就在age = test.nextInt(); ,你应该做一个test.nextLine()来在输入结束时使用换行符。 我们在阅读密码时不想阅读此内容。

接下来,你应该使用password = test.nextLine(); 读取用户输入的密码。

最后,您应该使用以下方法进行比较: if (password.equals(password2))==比较两个String对象是否具有相同的引用,即它们是否与Java已知的String对象相同。 你想要.equals() ,因为它会比较两个String对象的内容是否相等。 在这种情况下, passwordpassword2引用两个可能具有相同内容的不同String对象。