来自扫描仪的变量的Java输入值不适用于方法中的变量

时间:2016-02-22 04:41:22

标签: java recursion increment decrement

我对Java很新,所以请耐心等待。我在Java中创建了一个递归方法,允许我输入一个数字X,并让系统以2的递减值打印每个值,直到它达到1.(我必须添加扫描仪可以添加的规则也只取奇数)。我设置了扫描仪,但它似乎没有拿起我分配给n的值。

public class Recursividad {

        public static int Func(int n)
        {
            if (n != 1)
                return 0;
            else 
                return Func(n-2);
        }

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    int x = Func(n);
    System.out.println(x);
}

}

输出始终为0.

2 个答案:

答案 0 :(得分:2)

Dotol,它从扫描仪获取输入并将其分配给n。但是你在递归函数Func(int n)中使用的逻辑总是返回0因为你使用if(n!= 1)意味着每当你输入任何东西但是它总是返回0时。

P.S。你需要检查你的代码。此外,您可以进行一些调试,以了解您的错误。

答案 1 :(得分:1)

当您告诉您的计划return 0 n!=1时,如果return 0,它会n != 1。因此,除非您将0作为参数传递,否则它将始终打印出1,这将最终形成无限循环。

另外,如果你想每次打印出来的东西,你的命令应该在你的功能内,而不是在外面。如果您的System.out.println被置于递归函数之外,它将仅在整个递归完成后运行,因此,它将仅打印出最后一个数字。

您的代码看起来应该是这样的

public class Recursividad {

    public static int Func(int n)
    {
        System.out.println(n);
        if (n == 1)
            return n;
        else 
            return Func(n-2);
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int x = Func(n);
    }
}

PS:还要考虑检查数字是0还是负数