【问题标题】:Java in BlueJ does not execute main classBlueJ 中的 Java 不执行主类
【发布时间】:2015-06-11 13:35:17
【问题描述】:

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

【问题讨论】:

    标签: java bluej


    【解决方案1】:

    当您从类 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); 
        } 
    }
    

    【讨论】:

    • 感谢您的提示,但是主类仍然没有执行。
    • 你尝试执行 new ProgramOne() 还是 main 方法 (void main(String[] args)?如果你执行了 ProgramOne() 那么什么都不会执行,因为你没有在ProgramOne 类。如果你执行 main 函数,我相信程序会执行成功。或者如果你想执行 main 类调用 new ProgramOne() 函数,你必须初始化构造函数。
    • 也没有办法,因为 BlueJ 似乎认为有错误。 @ranjit kaliraj
    • 什么类型的错误?恐怕,但是如果您的代码中存在一些编译器问题,请尝试使用我提到的上述代码进行测试。我已经在我的 BlueJ 中成功执行了。
    猜你喜欢
    • 2015-12-25
    • 1970-01-01
    • 2015-07-05
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多