要停止在用户输入的数字

时间:2015-09-22 01:28:33

标签: java

如何让我的程序停止在用户输入? 这是我的代码:

public class H {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.println("Input x: ");
        int x = input.nextInt();

        for (int i = 0; i < x; i++) {
            if (i < x)
                System.out.print(printFib(i) + " ");
            else if (i > x)
                break;
        }
    }

    public static int printFib(int number) {
        if (number == 0 || number == 1)
            return number;
        else
            return printFib(number - 1) + printFib(number - 2);
    }
}

所以,如果我输入10,我的程序应该在数字之前停止。例如:

输入:10

输出:0 1 1 2 3 5 8

但我得到0 1 1 2 3 5 8 13 21 34

我该如何解决?

    int x = input.nextInt();
    int fib = 0;    
        while (fib < x){


    System.out.print(printFib(fib)+ " ");
       fib++;


    }
}

2 个答案:

答案 0 :(得分:2)

不要使用 for 循环,现在您正在使用它来打印斐波那契数字,直到打印的项目数小于输入的数字。而是使用 while 循环,当Fibonacci数字本身大于输入的数字时停止。

由于这可能是家庭作业,我只是提出这个建议,而不是代码解决方案,但请试一试,如果仍然卡住,请回答问题。

伪代码

Get value of x
create fibonacci variable and assign it 0
while fibonacci is less than x
   display current fibonacci number
   calculate next fibonacci number and place in variable
end while loop

答案 1 :(得分:-1)

public class H {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("Input x: ");
    int x = input.nextInt();

    int i = 0;
    while ( printFib(i) <= x ) {
        System.out.print(printFib(i) + " "); 
        i ++ ;
    }
}

public static int printFib(int number) {
    if (number == 0 || number == 1)
        return number;
    else
        return printFib(number - 1) + printFib(number - 2);
}

}

虽然从printFib()方法返回的数字小于等于用户输入,但它会运行该方法。我已经尝试了代码,但它确实有效。