Вопрос:

У меня проблемы с моими утверждениями if

java if-statement logic

87 просмотра

3 ответа

8 Репутация автора

Я полностью борюсь на своем уроке информатики в AP и почти не знаю, что происходит. Я тренировался на codingbat.com, но мне все еще нужна помощь с парой ошибок:

Синтаксическая ошибка на токене «логическое», ожидается @.

а также:

Синтаксическая ошибка на токенах, вместо этого ожидается ClassHeader.

редактировать: хорошо, так что я немного поработал над этим, и придумал это

public class sleepIn 
{
public static void main (String [] args)
 {
   boolean weekday=true; 
    boolean vacation=true;

      if(weekday==true && vacation==false)
      {
        return false;
      }
      if(weekday==false && vacation==true)
      {
        return true;
  }
}
}
  

public boolean sleepIn(boolean weekday, boolean vacation)
{
  public static void main (String [] args)
  {
    boolean weekday=true; 
    boolean vacation=true;

      if(weekday==true && vacation==false)
      {
        return false;
      }
  }

}

I'm still getting errors on it, but now they are different. They are:

Файл: C: \ Users \ ralph \ Desktop \ sleepIn.java [строка: 10] Ошибка: методы Void не могут вернуть значение

а также

Файл: C: \ Users \ ralph \ Desktop \ sleepIn.java [строка: 14] Ошибка: методы Void не могут вернуть значение

Автор: Andrew Источник Размещён: 08.11.2017 11:39

Ответы (3)


1 плюс

38 Репутация автора

Решение

Вы, кажется, объявили основную функцию программы в другой функции. Если вы удалите

public static void main (String[] args){}

от функции это будет работать. Java-программе потребуется основная функция, но она определена только внутри класса, а не другой функцией.

// ЗДЕСЬ МОЯ РЕДАКЦИЯ, ЧТОБЫ ОБЪЯСНИТЬ, КАК ВЫ ДОЛЖНЫ НАПИСАТЬ ЭТУ ПРОГРАММУ

public class MyClass {
    //I define the class here^^

    //Public function
    public static void main(String args[]) {

        //Here in the main function I will call the sleepIn 

        boolean sleepin = sleepIn(true,true);

        //I am setting weekday and vacation to true, it should in return print true
        System.out.println(sleepin); //It prints TRUE


    }

    //Your sleepIn function
    public static boolean sleepIn(boolean weekday, boolean vacation){
        if (weekday == true && vacation == true){

            //Here the function returns true (boolean)

            return true;
        }

        //The function returns false (boolean)

        return false;
    }
}

Итак, чтобы объяснить, что происходит, я определяю класс, затем внутри класса у меня есть метод main (где будет выполняться весь код), и у меня есть функция sleepIn (возвращает true или false на основе входных данных). Как вы можете видеть, когда я вызываю функцию sleepIn с обеими прамами, установленными как true в основном методе, он возвращает логическое значение (false), как и ожидалось. Затем я печатаю результаты.

Автор: Ethan Размещён: 08.11.2017 11:50

0 плюса

784 Репутация автора

Итак, сейчас есть две проблемы с кодом:

Синтаксическая ошибка на токене «логическое», ожидается @.

Это вызвано тем, что вы не возвращаете логическое значение из этой функции, поскольку вы определили тип возвращаемого значения как логическое, если вы не хотите ничего возвращать, измените его тип возврата на void:

public boolean sleepIn(boolean weekday, boolean vacation)
{
    //you need to return a boolean from here
}

Или же:

public void sleepIn(boolean weekday, boolean vacation)
{
    //do things
}

Во-вторых, вам нужно разделить ваши методы, вы не можете встроить один в другой:

  public static void main (String [] args)
  {
    boolean weekday=true; 
    boolean vacation=true;

      if(weekday==true && vacation==false)
      {
        //return false; //your main shouldn't be returning anything since 
                        //there's nothing to return to
      }
  }

  public boolean sleepIn(boolean weekday, boolean vacation)
  {
        //you need to return a boolean from here
  }

Вам необходимо вернуть логическое значение в вашем методе, sleepInпотому что вы определили это как тип возврата в заголовке метода:

  public **boolean** sleepIn

Что бы вы ни указали в качестве возвращаемого типа, ваш метод должен возвращать значение этого типа.

public class Test {

  public static void main (String[] args){
       boolean weekday=true; 
       boolean vacation=true;
       boolean result = sleepIn(weekday, vacation);
       System.out.println(result);
   }

   public static boolean sleepIn(boolean weekday, boolean vacation)
   {
       return (!weekday || vacation); //true if not a weekday or is a vac.
   }
}
Автор: luckydog32 Размещён: 08.11.2017 11:55

0 плюса

6396 Репутация автора

Проблема в том, что у вас есть метод, определенный в другом методе, который не разрешен. Это будет правильный класс:

public class Test {

      public static void main (String [] args){
           boolean result = sleepIn(true, true);
           System.out.println(result);
       }

    public static boolean sleepIn(boolean weekday, boolean vacation)
      {
        boolean weekday=true; 
        boolean vacation=true;

          if(weekday==true && vacation==false)
          {
            return false;
          }
      }
}
Автор: ACV Размещён: 09.11.2017 12:17
Вопросы из категории :
32x32