Java 代码没有执行实例方法
Java code is not executing instance method
我正在使用 BlueJ IDE。我有一个名为 ProgramOne
的主 class,还有另一个 class StarTurtle
(用于实例方法)。
这里是ProgramOne
的代码:
public class ProgramOne
{
public static void main (String[ ] args)
{
StarTurtle turtle1 = new StarTurtle(5);
turtle1.StartTurtle();
}
}
这里是StarTurtle
的代码:
public class StarTurtle
{
private int points;
public int StartTurtle(int x)
{
points = x;
Turtle sue;
sue = new Turtle();
sue.paint (90, 40);
}
}
(您看到的 turtle
方法来自另外两个 class,为简洁起见,我没有粘贴在这里。这些 class 位于 http://www.cs.ccsu.edu/~jones/book.htm 手动)
代码只编译,没有执行选项。但是,没有执行 void main (String[ ] args)
的选项,应该有执行 main class 的选项。有谁知道这是什么原因?我假设代码本身有问题。
编辑: 当我说 "option to execute" 时,我指的是这个 BlueJ 功能:
编辑: 以 Titus 和 Redge 描述的方式更改代码(在答案和答案评论中)修复了 StarTurtle
class,但是主 class ProgramOne
仍然没有执行。
改变
public int StartTurtle(int x)
至此
public StartTurtle(int x)
您写了关于 StartTurtl
class:
intended to serve an instance method
我的问题是 - 什么是 instance method
??
StarTurtle
没有任何接受 int 的构造函数,
public int StartTurtle(int x)
是一个方法而不是构造函数,您从 main
方法调用它而不带任何参数,因为它是,此代码将无法编译。
你可以把代码改成这样。
public static void main (String[ ] args) {
StarTurtle turtle1 = new StarTurtle();
int result = turtle1.StartTurtle(5);
}
为了遵守 Java 约定,您应该考虑以小写开头的方法名称。
所以...我以前不熟悉 BlueJ,但我刚刚下载了它并创建了我们一直建议的代码。现在看起来像这样。
ProgramOne.java
public class ProgramOne
{
public static void main (String[ ] args)
{
StarTurtle turtle1 = new StarTurtle();
turtle1.StartTurtle(5);
}
}
StarTurtle.java
public class StarTurtle
{
private int points;
public void StartTurtle(int x)
{
points = x;
Turtle sue;
sue = new Turtle();
sue.paint (90, 40);
}
}
使用此代码,上下文菜单看起来与原始问题中的完全一样:
显示void main(String[] args)
的菜单项弹出对话框如下:
如果我点击确定按钮,我似乎会得到一个名为 "Turtle Drawings" 的 window,其中包含一条垂直线。
我将 StartTurtle(int) 方法更改如下:
public void StartTurtle(int x)
{
points = x;
Turtle sue;
sue = new Turtle(true, 200,90);
sue.sleep(1000);
sue.say("Something");
sue.sleep(1000);
sue.paint (90, 40);
sue.sleep(1000);
sue.fillCircle(5);
sue.sleep(1000);
sue.fillBox(10, 20);
}
}
此修改后的代码以 1 秒的间隔显示消息、垂直线、圆和矩形。
由此我只能得出结论,代码现在有效,您应该通过选择显示为 void main(String{} args)
.
的菜单项来执行它
我正在使用 BlueJ IDE。我有一个名为 ProgramOne
的主 class,还有另一个 class StarTurtle
(用于实例方法)。
这里是ProgramOne
的代码:
public class ProgramOne
{
public static void main (String[ ] args)
{
StarTurtle turtle1 = new StarTurtle(5);
turtle1.StartTurtle();
}
}
这里是StarTurtle
的代码:
public class StarTurtle
{
private int points;
public int StartTurtle(int x)
{
points = x;
Turtle sue;
sue = new Turtle();
sue.paint (90, 40);
}
}
(您看到的 turtle
方法来自另外两个 class,为简洁起见,我没有粘贴在这里。这些 class 位于 http://www.cs.ccsu.edu/~jones/book.htm 手动)
代码只编译,没有执行选项。但是,没有执行 void main (String[ ] args)
的选项,应该有执行 main class 的选项。有谁知道这是什么原因?我假设代码本身有问题。
编辑: 当我说 "option to execute" 时,我指的是这个 BlueJ 功能:
编辑: 以 Titus 和 Redge 描述的方式更改代码(在答案和答案评论中)修复了 StarTurtle
class,但是主 class ProgramOne
仍然没有执行。
改变
public int StartTurtle(int x)
至此
public StartTurtle(int x)
您写了关于 StartTurtl
class:
intended to serve an instance method
我的问题是 - 什么是 instance method
??
StarTurtle
没有任何接受 int 的构造函数,
public int StartTurtle(int x)
是一个方法而不是构造函数,您从 main
方法调用它而不带任何参数,因为它是,此代码将无法编译。
你可以把代码改成这样。
public static void main (String[ ] args) {
StarTurtle turtle1 = new StarTurtle();
int result = turtle1.StartTurtle(5);
}
为了遵守 Java 约定,您应该考虑以小写开头的方法名称。
所以...我以前不熟悉 BlueJ,但我刚刚下载了它并创建了我们一直建议的代码。现在看起来像这样。
ProgramOne.java
public class ProgramOne
{
public static void main (String[ ] args)
{
StarTurtle turtle1 = new StarTurtle();
turtle1.StartTurtle(5);
}
}
StarTurtle.java
public class StarTurtle
{
private int points;
public void StartTurtle(int x)
{
points = x;
Turtle sue;
sue = new Turtle();
sue.paint (90, 40);
}
}
使用此代码,上下文菜单看起来与原始问题中的完全一样:
显示void main(String[] args)
的菜单项弹出对话框如下:
如果我点击确定按钮,我似乎会得到一个名为 "Turtle Drawings" 的 window,其中包含一条垂直线。
我将 StartTurtle(int) 方法更改如下:
public void StartTurtle(int x)
{
points = x;
Turtle sue;
sue = new Turtle(true, 200,90);
sue.sleep(1000);
sue.say("Something");
sue.sleep(1000);
sue.paint (90, 40);
sue.sleep(1000);
sue.fillCircle(5);
sue.sleep(1000);
sue.fillBox(10, 20);
}
}
此修改后的代码以 1 秒的间隔显示消息、垂直线、圆和矩形。
由此我只能得出结论,代码现在有效,您应该通过选择显示为 void main(String{} args)
.