Java &引用;不兼容的操作数类型int和string“;
我刚刚开始学习代码(特别是Java),我正在测试一个密码系统,当您键入密码时,它将变成变量“password”,并检查它是否等于password2,即实际密码。代码如下:Java &引用;不兼容的操作数类型int和string“;,java,string,if-statement,int,Java,String,If Statement,Int,我刚刚开始学习代码(特别是Java),我正在测试一个密码系统,当您键入密码时,它将变成变量“password”,并检查它是否等于password2,即实际密码。代码如下: import java.util.Scanner; public class LogicalOperators { public static void main(String args[]){ Scanner test = new Scanner(System.in); int a
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语句中检查我键入的密码是否与password2“callofduty”匹配;但问题是它不适用于字符串。这个问题的标题是出现的错误。有人能帮我吗?我试图给出一个提示,而不是提供完整的答案:
检查
password
和password2
的数据类型。为什么它们不同?在比较字符串时,应该使用等于,而不是==
所以使用
你必须做一些改变 第一个
password
应为String
类型,因为您希望在此处存储一个字符串并将其与另一个字符串进行比较
接下来,就在age=test.nextInt()之后
,您应该执行test.nextLine()
以使用输入末尾的换行符。我们不想在读取密码时读取此内容
接下来,您应该使用password=test.nextLine()
读取用户输入的密码
最后,您应该使用:
if(password.equals(password2))
进行比较<代码>=比较两个字符串对象是否具有相同的引用,即它们是否是Java已知的相同字符串对象。这里需要.equals()
,因为它会比较两个字符串对象的内容是否相等。在这种情况下,password
和password2
指的是可能具有相同内容的两个不同字符串对象。password是您输入的内容,代码会检查它是否与实际密码password2匹配。int password;字符串密码2;如果(password==password2)始终为false,则“int”不能等于“String”。。。(事实上它甚至不会编译……为什么不先修复编译器错误呢?)@Daniel:那么为什么password
的类型是int
?用户只能输入数字吗?在我将其设置为字符串之前,我试图让它与int一起工作,但我没有意识到不能在这样的if语句中使用int和string:3@Daniel:作为int
,它有什么意义?然后用户只能输入数字作为密码,这不能等同于“使命召唤”。谢谢,我试过了,但空格或大写不起作用,因为password2等于“使命召唤”,我输入了它不起作用,我把它改为“嗨”,它就起作用了。检查下面我的评论。如果使用nextLine()
方法,您可以获得用户输入的整个字符串以及空格。这个问题不是封闭的(这个术语有非常特殊的含义)。如果您的问题已得到回答,只需接受对您帮助最大的答案。要检查两个字符串是否相同,必须使用.equals
方法,而不是检查参考的=
。另外,将密码类型更改为字符串。test.nextLine()似乎没有任何作用,而将test.next()更改为test.nextLine()作为密码,则当您输入正确的年龄时,它会显示“请输入密码:您输入的密码不正确”引用我的回答中对解决您的问题很重要的部分:“接下来,在age=test.nextInt();
之后,您应该放置一个test.nextLine()
,在输入的末尾使用换行符。我们不希望在读取密码时读取此内容。”
if(password.equals(password2){
do something
}