BlueJ中的Java不执行主类

时间:2015-04-07 03:46:34

标签: java bluej

我正在使用BlueJ IDE。我有一个名为ProgramOne的主类,另一个类StarTurtle(用于提供实例方法)。

以下是ProgramOne的代码:

        public class ProgramOne
        {
     public static void main (String[ ] args) {  
          StarTurtle turtle1 = new StarTurtle();
          int result = turtle1.StartTurtle(5);

     }
}

以下是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)的选项,应该执行主类。有谁知道这是什么原因?我假设代码本身存在问题。 StarTurtle类确实执行,但主类ProgramOne没有,这让我相信问题出在ProgramOne类。

当我的意思是"执行"的选项时,我指的是这个BlueJ功能:

BlueJ

1 个答案:

答案 0 :(得分:0)

当您从ProgramOne类调用main方法时,您已经创建了一个StarTurtle turtle1实例。但是当您通过调用turtle1.StartTurtle(5)方法在结果变量中赋值时,该变量中不存储任何内容。问题是你在StarTurtle类中有这个函数的问题。您已将public int StartTurtle(int x)函数定义为返回类型,但实际上它并未返回任何内容。因此,您需要在该代码块上添加一个return语句。

public class StarTurtle { 
    private int points; 
    public int StartTurtle(int x){ 
        points = x; 
        Turtle sue;
        sue = new Turtle();
        sue.paint (90, 40); 
        return points;
    } 
}

但是,另一方面,虽然它们正在运行,但您的类和功能是不正确的。你的课应该是这样的。

public class ProgramOne{
     public static void main (String[ ] args) {  
          StarTurtle turtle1 = new StarTurtle();
          turtle1.StartTurtle();
     }
}

public class StarTurtle { 
    //Void type of method instead of previous return type
    public void StartTurtle(){ 
        Turtle sue;
        sue = new Turtle();
        sue.paint (900, 550); 
    } 
}