Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;不兼容的操作数类型int和string“;_Java_String_If Statement_Int - Fatal编程技术网

Java &引用;不兼容的操作数类型int和string“;

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

我刚刚开始学习代码(特别是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语句中检查我键入的密码是否与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
}