Java 用Flag法代替Fibonacci数列中的倍数

Java 用Flag法代替Fibonacci数列中的倍数,java,fibonacci,Java,Fibonacci,正如标题所示,我有斐波那契数列的代码,我的目标是用一个单词替换数列中的倍数(3、5、7和它们的组合)。有人建议我在if循环中使用一个标志来检查打印的短语,如果该短语已打印,则跳过该数字。基本上,我希望输出是这样的: 1 1 2跳过8 13跳过34 55 (目前,这只是取代三的倍数) 相反,我得到的是: 1 1 2 3 skip5 8 13 21 skip34 55 以下是我目前的代码: int febCount = 50; long[] feb = new long[febCount]; feb

正如标题所示,我有斐波那契数列的代码,我的目标是用一个单词替换数列中的倍数(3、5、7和它们的组合)。有人建议我在if循环中使用一个标志来检查打印的短语,如果该短语已打印,则跳过该数字。基本上,我希望输出是这样的:

1 1 2跳过8 13跳过34 55

(目前,这只是取代三的倍数)

相反,我得到的是:

1 1 2 3 skip5 8 13 21 skip34 55

以下是我目前的代码:

int febCount = 50;
long[] feb = new long[febCount];
feb[0] = 1;
feb[1] = 1;
for (int i = 2; i < febCount; i++) {
 feb[i] = feb[i - 1] + feb[i - 2];
}

for (int i = 0; i < febCount; i++) {
 System.out.print(feb[i] + ((i % 10 == 9) ? "\n" : " "));
 if (feb[i] % 3 == 0)
  System.out.print("skip");
}
int febCount=50;
long[]feb=新的long[febCount];
feb[0]=1;
feb[1]=1;
for(int i=2;i

感谢您的任何帮助

让我们浏览一下您提供的代码,并尝试理解它为什么不起作用

//The first thing we do is setup the loop to iterate through the fib numbers.
//This looks good.
for (int i = 0; i < febCount; i++) {
 //Here we print out the fibonacci number we are on, unconditionally.
 //This means that every fibonacci number will be printed no matter what number it is
 //we don't want that.
 System.out.print(feb[i] + ((i % 10 == 9) ? "\n" : " "));
 //After we print the number, we check to see if it is a multiple of three.
 //maybe we should be waiting to print until then?
 if (feb[i] % 3 == 0)
  System.out.print("skip");
}
//我们要做的第一件事是设置循环以迭代fib数。
//这看起来不错。
for(int i=0;i
现在我们已经浏览了代码,我们可以提出一个新的解决方案。 让我们尝试更新循环,以便它等待打印斐波那契数,直到我们检查它是否满足我们的条件

for (int i = 0; i < febCount; i++) {
    if (feb[i] % 3 == 0 || feb[i] % 5 == 0 || feb[i] % 7 == 0) { //check if multiple of 3 5 or 7
         System.out.println(" Skip ");
    } else { //if it's not a multiple, then print the number
       System.out.println(" " + feb[i]);
    }
}
for(int i=0;i
你试过调试你的代码吗?我没有看到语法错误:/如果有语法错误,你的代码永远不会编译。调试将引导您找到问题。我给你一个提示:事情是否按正确的顺序执行?这很有道理。非常感谢。我一整天都在想这个问题,这是一个转换打印顺序的问题。如果我想用一个不同的短语替换5的倍数,用另一个短语替换7的倍数,会是什么情况呢?现在代码的编写方式是,我们将35和7的每种情况都视为相同的事情,你的第一步应该是让每个人都有自己的理由,所以现在,我已经把他们分开了。我正在接近我想要的结果,但是对于5和7的情况,我仍然存在只打印单词而不是同时打印单词和数字的问题。只需放置另一个。在每个案例完成后,是否会放置另一个}else{System.out.print(2月[i])?