“缺少方法体,或声明抽象。” Jblue

时间:2015-06-09 23:12:39

标签: java

这是我的代码:(我拉了一个旧的指令来制作一个“硬币翻转”程序,我正在尝试重写它。

//Name: Adam
//Approximate time to complete: Lel
//References: scrub

public class CoinFlip {

    public static void main(String[] args) {
        //Get a random number
        //Decide the outcome of the coin flip
        //Get a second random number
        //Decide the outcome of a second coin flip
        //Print out which flip had a higher score
        //Print out the maximum of the two flips
    }

    public static double random();
}

我不断收到错误“Missing method body,或声明abstract。”

为什么?

我有一个问题。如何格式化“{”和东西?另外,我是如何将“public static double random()”代码更正确的?或者我应该把它放在公共课下?我对如何组织它感到困惑,我觉得这看起来不对。

4 个答案:

答案 0 :(得分:1)

public static double random();

这是代码上下文中不完整的方法声明。您需要为random()提供一个正文,以及" Missing方法正文"消息的一部分告诉你。

只有两个上下文可以在不提供正文(实现)的情况下声明方法,这就是"声明抽象"部分来自:

  • 您有一个抽象类,您将使用abstract修饰符public abstract double random();将此方法定义为抽象。然后,预计子类型将提供必要的实现。
  • 您有一个接口,并将此方法定义为接口的一部分double random();。然后,期望接口的具体实现将为该方法提供实现。
  

如何格式化" {" s和东西?

Java编码样式和约定是here,但自99年以来它还没有更新。所以我猜他们在技术上是正式的。支撑的位置往往是一个偏好的问题,但通常会强制执行某种约定。我见过的最常见的模式是:

  • 在声明/ conditional-expression / looping-construct的同一行打开大括号,并在自己的行上关闭大括号:

    if(...) {
       ...
    }
    
  • 自行打开和关闭括号:

    if(...)
    {
       ...
    }
    

还有一些其他不太常见的样式,你可以看到here

  

另外,我是如何将" public static double random()"代码正确吗?或者我应该把它放在公共课下?

您需要提供实现(正文),或者您需要创建自己的抽象类并将其定义为该类中的抽象方法。然后你需要一个扩展抽象类的类,而 类将为random提供实现。

答案 1 :(得分:0)

错误是不言自明的

Missing method body, or declare abstract.

现在看看你的方法

public static double random(); 

没有身体。没有正文的方法是一种抽象方法,需要使用abstract关键字进行标记。将方法标记为抽象将需要将您的类标记为抽象,不确定您是否真的想要这样做。

如果你只是想让一个方法非抽象但是空体,那么添加空体,如下所述:

public static double random() {}

编辑:由于您的方法返回一个值,因此您不能拥有一个空体,因此您可能必须将返回类型更改为void或提供一个返回值的正文:

public static void random() {}

答案 2 :(得分:0)

所有方法都需要包含一个方法定义,即包含第一个大括号后的所有内容,除非该方法被声明为abstract,在这种情况下,关键字abstract需要在方法声明中使用,并且方法所在的类应该使用是抽象的。

关于其ogranisation:

    public class CoinFlip {

    public static void main(String[] args) {
    //method calls to static methods here like so :
    double answer=random();
    }
    //static methods here
    public static double random();
}

答案 3 :(得分:-1)

public static double random();

以上在语法上是不正确的。如果要声明方法,请为其指定空白

public static double random() {}

或者有一个关键词' abstract'在方法签名中。

public double random() {}

**注意:在这种情况下,您还需要将类声明为静态,并从方法签名中删除static关键字。

public abstract class CoinFlip { 
             /* your code */
  }

必须将具有单个抽象方法的类声明为static。