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).

的菜单项来执行它