【问题标题】:Error :illegal start of expression and ";" expected错误:表达式和“;”的非法开始预期的
【发布时间】:2018-10-15 12:40:14
【问题描述】:

问题:当狗在吠叫时,在早上 8 点或晚上 22 点之前,返回 true,否则返回 false。

我的代码:

public class Barkingdog {

    public boolean bark(boolean barking, int hourofDay) {
        if (barking) {
            if (hourofDay >= 0 && hourofDay <= 8) {
                return true;
            } else if (hourofDay >= 22 && hourofDay < 24) {
            return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
}

尝试测试我的代码:

package com.company;

public class Main {

    public static boolean main(String[] args) {
    // write your code here
        System.out.println(public boolean bark (true, 4););
    }
}

【问题讨论】:

  • 尝试使用System.out.println(bark(true, 4));

标签: java error-handling expression


【解决方案1】:
  1. 请确保您的 main() 方法具有正确的签名。
  2. 您正在调用该方法,因此不需要提供访问修饰符。仅在声明时指定访问修饰符。
  3. 在调用时删除额外的;

    public static void main(String[] args) {
    // write your code here
      System.out.println(bark(true, 4));
    }
    

【讨论】:

  • 这行不通 - 您正在从静态上下文中调用实例方法。
【解决方案2】:

创建Barkingdog 的实例并从中调用您的bark 方法:

public static void main(String[] args) {
    Barkingdog dog = new Barkingdog();
    System.out.println(dog.bark(true, 4));
}

另外,请使用正确的 Java 命名约定。类应该使用驼峰式:

public class BarkingDog { ... }

你也可以简单的 bark 方法的逻辑:

public boolean bark(boolean barking, int hourOfDay) {
    boolean morning = hourOfDay >= 0 && hourOfDay <= 8;
    boolean night = hourOfDay >= 22 && hourOfDay < 24;

    return barking && morning || night;
}

bark 似乎不是这种行为的正确名称。

boolean barking表示狗是否真的在吠叫,由于barking可能是false,调用dog.bark(false, 8)可能会引起混淆:我们是在告诉狗执行bark的行为,但狗是不叫(由false 参数指定)。

可能想为行为选择一个更具描述性的名称,例如 isBarkingUnderirably,我们将在其中检查 barking 是否在理想的时间发生。

【讨论】:

    猜你喜欢
    • 2015-08-06
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 2018-04-30
    • 2013-10-04
    相关资源
    最近更新 更多