简单Java方法将无法运行。方法内部方法

时间:2013-10-01 00:07:36

标签: java methods

这是我的代码:

public class Project1mrybak3
{   
    public static void main (String[] args)   
    {
        System.out.println("Begin Java Exection");  
        System.out.println("");

        // put your Java Program here

        //choose picture

        String  picfile = FileChooser.pickAFile();  
        Picture pic     = new Picture(picfile);

        //Create turtle 1   
        Turtle t1 = new Turtle (pic);   
        t1.setPenWidth(10);

        //Create turtle 2  
        Turtle t2 = new Turtle (pic);

        flower(t1,200);

        //show picture    
        pic.show();

        System.out.println("");     
        System.out.println("End Java Exection");
    }//end of main class


    public static void flower (Turtle tparam, int x )     
    {     
        tparam.forward(x);     
    }

    public static void flowers ()       
    {      
        flower(t1,15);    
    }
} // end of Template class

你可以说,它没有多大意义,但我刚开始写它。我的问题是,对于最后一个方法flowers,当我尝试运行它时,它说它无法找到符号变量t1。如果我取出参数,则表示需要参数Turtleint。我可以不在方法中放入方法吗?

最终我的目标是创建大约4种方法来绘制花的部分,然后将它们全部放在一个方法中,然后在我的主代码中,我可以用turtle t1调用该方法和一些x变量。

感谢您的帮助和时间!

3 个答案:

答案 0 :(得分:3)

不,你不能把方法放在方法里面。

如果你需要使用多个方法并且将变量作为参数传递没有意义,你应该将所需的变量变成fields (or members) of a class(读取它会有帮助的链接)。将他们的声明移到他们所在的方法之外(例如main)并进入类本身的范围。然后,该类中的所有方法都可以引用这些变量:

  • this.为前缀
  • 或者就像它们一样,只要没有同名的局部变量。

答案 1 :(得分:1)

像NickC说的那样,你不能把方法放在方法里面。但是,这里需要注意的其他重要事项是,示例中的t1不是方法;它是一个对象(来自反射API的Method个对象有点超出了这个问题的范围......)。我并不是要设想你的设计,但似乎你可能想要在一个单独的Turtle类中使用各种绘图方法,并且你可以在该类中使用另一个方法依次调用所有辅助方法,如下所示:

public void drawFlower(int xPosition) {
    drawStem(xPosition);
    drawStamen(xPosition);
    drawPetals(xPosition);
    ...
}

这样,所有这些辅助方法都可以访问(我认为)做绘图的Turtle(通过this关键字,如NickC指出的那样),并且他们可以返回修改后的如果你想要xPosition,你可以将不同的起点传递给下一个方法。

答案 2 :(得分:0)

您无法在方法中定义方法,但可以在方法内部调用方法 - 例如在具有可能不同参数的循环中重新运行方法,直到满足条件。