如何让我的程序停止在用户输入? 这是我的代码:
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++;
}
}
答案 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()
方法返回的数字小于等于用户输入,但它会运行该方法。我已经尝试了代码,但它确实有效。