这是我的代码:(我拉了一个旧的指令来制作一个“硬币翻转”程序,我正在尝试重写它。
//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()”代码更正确的?或者我应该把它放在公共课下?我对如何组织它感到困惑,我觉得这看起来不对。
答案 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。