我正在使用BlueJ IDE。我有一个名为ProgramOne
的主类,另一个类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
方法来自另外两个我为了简洁而没有粘贴的类。这些类可以在http://www.cs.ccsu.edu/~jones/book.htm手册中找到)
代码只编译,没有执行选项。但是,没有执行void main (String[ ] args)
的选项,应该执行主类。有谁知道这是什么原因?我假设代码本身存在问题。
修改:当我的意思是"选项执行"时,我指的是BlueJ功能:
编辑:以Titus和Redge所描述的方式更改代码(在答案的答案和评论中)修复了StarTurtle
类,但主要类ProgramOne
仍然没有执行。
答案 0 :(得分:4)
所以...我以前不熟悉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)
的菜单项会弹出如下对话框:
如果我按下OK按钮,我似乎会看到一个名为" Turtle Drawings"包含垂直线。
我更改了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)
的菜单项来执行它。
答案 1 :(得分:1)
StarTurtle
没有任何带有int的构造函数,
public int StartTurtle(int x)
是一个方法而不是构造函数,并且您在没有任何参数的情况下从main
方法调用它,因为它不会编译。
您可以将代码更改为此类内容。
public static void main (String[ ] args) {
StarTurtle turtle1 = new StarTurtle();
int result = turtle1.StartTurtle(5);
}
要遵守Java约定,您应该考虑使用小写字母启动方法名称。
答案 2 :(得分:0)
更改
public int StartTurtle(int x)
到这个
public StartTurtle(int x)
你写了关于StartTurtl
class:
旨在提供实例方法
我的问题是 - 什么是instance method
??