Java 方法中的方法

Java 方法中的方法,java,methods,Java,Methods,在Java的主方法中有一个方法在语法上正确吗?比如说 class Blastoff { public static void main(String[] args) { //countdown method inside main public static void countdown(int n) { if (n == 0) { System.out.println("Blastoff!")

在Java的主方法中有一个方法在语法上正确吗?比如说

class Blastoff {

    public static void main(String[] args) {

        //countdown method inside main
        public static void countdown(int n) {

            if (n == 0) {
                System.out.println("Blastoff!");
            } else {
                System.out.println(n);
                countdown(n - 1);
            }
        }
    }
}

不,不是直接的;然而,一个方法可能包含一个本地内部类,当然,该内部类也可以包含方法。给出了一些例子

然而,在您的情况下,您可能只想从
main
内部调用
countdown
;实际上,您不需要将其整个定义放在
main
中。例如:

class Blastoff {

    public static void main(String[] args) {
        countdown(Integer.parseInt(args[0]));
    }

    private static void countdown(int n) {
        if (n == 0) {
            System.out.println("Blastoff!");
        } else {
            System.out.println(n);
            countdown(n - 1);
        }
    }
}

(请注意,我已将
倒计时
声明为
私有
,因此只能从
启动
类中调用它,我假设这是您的意图?

它不是方法内部的方法,这称为递归。是的,你的算法看起来不错。@LuiggiMendoza虽然
countdown
是递归的,但它在词汇上也嵌套在
main
中。我想问一下我在main方法中有countdown方法的那部分,因为我的编译器说它有一个错误line@LuiggiMendoza这就是问题所在@LuiggiMendoza我没有资格回答Java问题(参见ruakh的答案?我不会想到匿名内部类)。我只有在人们错过问题时才有资格指出;-)是的,这是我的意图,谢谢。我仍然掌握着整个类/方法/对象结构的窍门,
倒计时(Integer.parseInt(args[0])到底是什么
line do?@user194007:
args
参数到
main
是一个命令行参数数组,作为
String
实例
args[0]
是第一个命令行参数,作为
字符串
。将该
字符串
解析为以10为基数的整数,并返回一个
int
。因此
countdown(Integer.parseInt(args[0])
将第一个命令行参数解析为基数为10的整数,并使用它调用
countdown
。(试着以
javablastoff 10
的形式运行你的程序,你就会明白我的意思了。)