我的if语句有问题

时间:2017-11-08 23:39:45

标签: java if-statement logic

我在AP计算机科学课上彻底挣扎,几乎不知道最新情况。我一直在codingbat.com上练习,但我仍然需要一些错误的帮助:

  

令牌上的语法错误“boolean",@ expected。

  

令牌上的语法错误,而不是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 [line:10]   错误:Void方法无法返回值

  

文件:C:\ Users \ ralph \ Desktop \ sleepIn.java [line:14]   错误:Void方法无法返回值

3 个答案:

答案 0 :(得分:1)

你似乎已经在另一个函数中声明了程序的主要功能。如果删除

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

从它将起作用的功能。 java程序将需要main函数,但只在类中定义而不是另一个函数。

//这是我的编辑,以解释你应该如何编写这个程序

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)。正如您所看到的,当我在main方法中将两个prarams设置为true时调用sleepIn函数时,它会按预期返回一个布尔值(false)。然后我打印结果。

答案 1 :(得分:0)

现在代码中存在两个问题:

  

令牌上的语法错误“boolean",@ expected。

由于您没有从此函数返回布尔值,因为您将其返回类型定义为布尔值,如果您不想返回任何内容,则将其返回类型更改为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.
   }
}

答案 2 :(得分:0)

问题是您在另一个方法中定义了一个不允许的方法。这将是一个正确的类:

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;
          }
      }
}