1

这是我的代码:

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变量调用该方法。

感谢您的帮助和您的时间!

4

3 回答 3

3

不,您不能将方法放在方法中。

如果您需要使用多种方法并且将变量作为参数传递没有意义,则应将所需的变量放入类的字段(或成员)中(阅读该链接会有所帮助)。将它们的声明移到它们本地的方法之外(例如main)并进入类本身的范围。然后,该类中的所有方法都可以引用这些变量:

  • this.前缀
  • 或者就像它们一样,只要没有同名的局部变量。
于 2013-10-01T00:11:07.377 回答
1

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

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

这样,所有这些辅助方法都可以访问Turtle(我认为)进行绘图的(通过this关键字,正如 NickC 指出的那样),并且如果您愿意,它们可以返回修改后的 xPosition 以便您可以传递不同的起点进入下一个方法。

于 2013-10-01T00:22:31.847 回答
0

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

于 2013-10-01T00:37:44.510 回答