【问题标题】:I am having problems with my if statements我的 if 语句有问题
【发布时间】:2017-11-08 23:39:44
【问题描述】:

我在 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 方法不能返回值

【问题讨论】:

  • @NicolásStraub 标签说 java 不是 javascript
  • 你不能在另一个函数中定义 main。你想要class Something { public static void Main.... { } }

标签: java if-statement logic


【解决方案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 方法中调用 sleepIn 函数并将两个 prarams 设置为 true 时,它​​会按预期返回一个布尔值 (false)。然后我打印结果。

【讨论】:

  • 我试过你说的,但它所做的只是返回更多错误。知道为什么吗?
  • 您返回的两个错误基本上是说您需要为 sleepIn 函数返回一个布尔值以及您需要有一个类。您的所有变量和函数都定义在程序类中吗?
  • 它返回了一个相同的错误,除了三个新错误; “语法错误,插入”。 class”完成Expression”,“语法错误,插入”)“完成SingleMemberAnnotation”,以及“语法错误,插入“interface Identifier”完成InterfaceHeader”。
  • 您似乎有很多语法错误,请检查您的代码以确保它是正确的。我们可以看到整个程序吗?
  • 这是整个程序... :(
【解决方案2】:

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

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

【讨论】:

  • 如果我把问题链接到你那里可以吗,你可以看看它。这可能非常非常简单,但我只是不擅长编码。
  • 你只需要更加努力。这就是成功所需的一切
【解决方案3】:

所以现在代码有两个问题:

标记“布尔”的语法错误,@预期。

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

【讨论】:

  • 我真的很感激这个答案,但我有点困惑。我不太明白为什么我需要直接在布尔值下面返回一个布尔值,当没有语句声明它是真或假时。
  • @Andrew 你不需要立即返回布尔值,你只需要在方法结束时返回它。您需要这样做,因为您在方法头 public boolean sleepIn(boolean weekday, boolean vacation) 中将 boolean 定义为返回类型。
  • 我试了你说的,错误不断堆积。我很困惑。这可能是由于我缺乏知识,但如果您有其他想法,请告诉我。
  • @Andrew 我对我认为您的代码在作为 ACV 帖子的一部分完成时的外观进行了编辑。如果他在几分钟内不接受,我会把它放在我的帖子底部。
  • 非常感谢。我真的很感激。
猜你喜欢
  • 2015-09-15
  • 2017-02-11
  • 2014-01-23
  • 2013-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多