Ошибка компиляции в очень глупой программе

#java

#java

Вопрос:

 import java.util.Scanner;

public class KekOrCringe {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        String userGuess = "";
        boolean Continue = true;
        boolean ProperResponse = true;
        boolean IsCorrect = true;
        boolean YesNo = true;

            while (Continue)
            {
                int secretAnswer = (int)(Math.random() * 2   1);
                kekOrCringe(secretAnswer);
                while (!IsCorrect)
                {
                    System.out.println("Kek or Cringe?");
                    ProperResponse = false;
                    while (!ProperResponse) {
                        userGuess = scan.nextLine();
                        if (userGuess != "Kek") 
                            System.out.println("Your entry is invalid, please try again!");
                        else if (userGuess != "Cringe")
                            System.out.println("Your entry is invalid, please try again!");
                        else 
                            ProperResponse = true;
                    }
                    for (int guessCount = 0; guessCount < 1; guessCount  ) {
                        if (userGuess = "Cringe" amp;amp; userGuess != secretAnswer) {
                            System.out.println("It's KeK!"); 
                            guessCount  ; }
                        else if (userGuess = "Kek" amp;amp; userGuess != secretAnswer) { 
                            System.out.println("It's CrInGe!"); 
                            guessCount  ; }
                        else
                            System.out.println("Mr. Morgan, you got it right my boy!");
                            IsCorrect = true;
                        }
                    }
                }
                YesNo = false;
                while(!YesNo) {
                    System.out.println("Would you like to play again? Yes/No");
                    String answer = scan.nextLine();
                    if (answer.equals("No")) {
                        Continue = false;
                        YesNo = true;
                        System.out.println("Fine. You were Cringe anyway!");
                    }
                    else if (answer.equals("Yes")) {
                        YesNo = true;
                        Continue = true;
                        IsCorrect = false;
                    }
                }
            }
        

                            
    public static String kekOrCringe(int secretAnswer) {
        if (secretAnswer = 1) { return "Kek";}
        if (secretAnswer = 2) { return "Cringe";}
    }
} 
  

Возможно, это слишком сложный способ сделать что-то ненужное, но это мой первый год обучения программированию в колледже, и меня попросили попробовать. Я думаю, что это забавно, и, вероятно, будет еще смешнее, если это сработает, а также будет хорошей практикой. У меня возникли проблемы с преобразованием int secretAnswer в возвращаемую строку, а затем сравнением пользовательского запроса с возвращаемым типом. Получение ошибок компиляции в строках 32 и 35. Любые советы будут оценены.

PS Я понимаю, что это глупо. Пытаюсь использовать этот глупый код как возможность обучения.

Комментарии:

1. В чем ошибка компиляции?

2. Несовместимые типы операндов, String и int. Строка 32. Цель состояла в том, чтобы вызвать метод KekorCringe, используя значение secretAnswer , а затем, когда KekorCringe задаст возвращаемый тип, он повторно объявит значение secretAnswer . Это просто не сработало таким образом. Не уверен, как это изменить.

3. С кодом связано несколько проблем. Что вы пытаетесь здесь сделать?

4. Это просто программа RNG, которая генерирует два возможных ответа. «Кек» или «Съежиться». У пользователя есть одно предположение, чтобы сделать это правильно.

5. Даже если вы решите две проблемы с компиляцией, есть несколько логических проблем с кодом. Я бы посоветовал вам, пожалуйста, перейти к вашему коду построчно, используя отладчик. И понять, что происходит.

Ответ №1:

Я предполагаю, что строки 32 и 35 — это два ifs. userGuess != secretAnswer не работает, поскольку один представляет собой строку, а другой — целое число. Ваш статический метод kekOrCringe(secretAnswer); возвращает нужную вам строку, вам просто нужно сохранить ее в переменной, а затем сравнить с пользовательскими данными.

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

Комментарии:

1. Даже для логических значений?

2. Да, каждая переменная должна быть названа в нижнем регистре camel. Константы, объявленные со статическим финалом, должны быть в верхнем регистре: cs.cornell.edu/courses/JavaAndDS/JavaStyle.html#Naming

Ответ №2:

Я не могу добавить комментарий, поэтому пишу здесь.

userGuess — это строка, но secretAnswer — это int , и вы пытаетесь проверить, равны ли они ( userGuess != secretAnswer ) .

Вы можете использовать новую переменную like secretGuess , присвоить kekOrCringe(secretAnswer) secretGuess и проверить userGuess , равно ли secretGuess она .

Вот так:

 String secretGuess = kekOrCringe(secretAnswer);
if (userGuess != secretGuess) {
  //...
}
  

Ответ №3:

Вы пытаетесь сравнить int со строкой, что неверно

 userGuess != secretAnswer
  

Кроме того, вместо сравнения вы присваиваете значения внутри условия if.

     if (secretAnswer = 1) { return "Kek";}
    if (secretAnswer = 2) { return "Cringe";}
  

Это должно быть:

     if (secretAnswer == 1) { return "Kek";}
    if (secretAnswer == 2) { return "Cringe";}