Blurb Generator

时间:2014-04-21 01:45:46

标签: java recursion

我一直在为一个项目上课而且我已经完成了但是我最后有一个错误可以有人帮忙吗?卡住的主要方法是说方法main不能声明为static;静态方法只能在静态或顶级类型中声明。

package cwcanada;
import java.util.Random;

public class blurb {

    public class RecursiveBlurb
    {

        Random chooser;

        public RecursiveBlurb()
        {
            chooser = new Random() ;
        }
        private String getWhoozitYs(){

            StringBuffer y = new StringBuffer();

            boolean stop = chooser.nextBoolean();
            if (!stop)
            y.append(getWhoozitYs());
            else
            return y.toString();

            y.append("y");
            return y.toString();
        }

        private String getWhoozit()
        {
            StringBuffer whoozit = new StringBuffer();
            whoozit.append("x");
            whoozit.append(getWhoozitYs());

            return whoozit.toString();

        }

        private String getWhatzit()
        {
            StringBuffer whatzit =new StringBuffer();
            whatzit.append("q");
            boolean z = chooser.nextBoolean();
            if (z)
            whatzit.append("z");
            else
            whatzit.append("d");

            whatzit.append(getWhoozit());

            return whatzit.toString();

        }

        private String getMultipleWhatzits()
        {
            StringBuffer whatzits =new StringBuffer();

            whatzits.append(getWhatzit());
            boolean stop = chooser.nextBoolean();
            if (!stop)
            whatzits.append(getMultipleWhatzits());
            else
            return whatzits.toString();

            return whatzits.toString();

        }

        public String generateBlurb()
        {
            StringBuffer blurb = new StringBuffer();
            blurb.append(getWhoozit());
            blurb.append(getMultipleWhatzits());

            return blurb.toString();
        }

        public static void main (String args [])
        {

            RecursiveBlurb blurbs = new RecursiveBlurb();

            System.out.println("Blurb : " + blurbs.generateBlurb());

            System.out.println("Blurb : " + blurbs.generateBlurb());

            System.out.println("Blurb : " + blurbs.generateBlurb());

        }
    }
}

2 个答案:

答案 0 :(得分:0)

您无法从静态主方法内部调用实例方法。如果您要将main方法放在RecursiveBlurb类中,则必须将所有方法声明为静态方法。我的建议是将main方法提取到另一个类,因为这样可以更容易静态使用。

答案 1 :(得分:0)

我经常遇到Java这个问题,我猜你有类似的问题。

我经常运行这样的所有Java程序:

public static void main(String[] args){
    new MyProgram();
}

//And the code you usually have in the static main goes here:
public MyProgram(){
    //Calls to generate blurb.
}

Java关于static的严格裁决经常会变得非常令人头痛,因此我只是使用main作为程序的入口,并在此之后运行其他所有内容作为常规代码 - 以及我从未遇到过与静态方法有关的编译器错误的任何问题。

编辑:此外,让您的班级名字以小写字母开头是非常糟糕的编程实践。使用带有大写字母B的public class Blurb来遵守Java编码标准。