Java代码不执行实例方法

时间:2015-04-04 23:12:01

标签: java bluej

我正在使用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功能:

BlueJ

编辑:以Titus和Redge所描述的方式更改代码(在答案的答案和评论中)修复了StarTurtle类,但主要类ProgramOne仍然没有执行。

3 个答案:

答案 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); 

    } 

} 

使用此代码,上下文菜单与原始问题中的内容完全相同:

enter image description here

显示void main(String[] args)的菜单项会弹出如下对话框:

dialog

如果我按下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 ??