«Несовместимые типы операндов int и string» - PullRequest
0 голосов
/ 26 июля 2011

Я только начал изучать код (особенно Java), и я тестирую систему паролей, где при вводе пароля она становится переменной «пароль» и проверяет, равен ли она паролю2, фактическому паролю. Вот код:

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 "Call of Duty"; но проблема в том, что он не работает со строками. Название этого вопроса - ошибка, которая появляется. Может ли кто-нибудь помочь мне?

Ответы [ 3 ]

9 голосов
/ 26 июля 2011

Я пытаюсь дать подсказку вместо полного ответа:

Проверьте типы данных password и password2. Почему они разные?

3 голосов
/ 26 июля 2011

при сравнении строк вы должны использовать равно = =, поэтому используйте

if(password.equals(password2){
do something
}
1 голос
/ 26 июля 2011

Вы должны сделать пару изменений.

Первый password должен иметь тип String, поскольку вы хотите сохранить здесь строку и сравнить ее с другой строкой.

Далее, сразу после age = test.nextInt();, вы должны сделать test.nextLine(), чтобы использовать символ новой строки в конце ввода. Мы не хотим читать это, когда читаем пароль.

Далее вы должны использовать password = test.nextLine(); для чтения пароля, введенного пользователем.

Наконец, вы должны сравнить его, используя: if (password.equals(password2)). == сравнивает, имеют ли оба объекта String одинаковые ссылки, т. Е. Являются ли они теми же объектами String, которые известны в Java. Вы хотите .equals() здесь, потому что он сравнил бы, равны ли содержимое двух объектов String. В этом случае password и password2 относятся к двум разным объектам String, которые могут иметь одинаковое содержимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...