2016-02-12 2 views
-1

Как видно из названия, у меня есть код для серии Фибоначчи, и моя цель - заменить кратные числа (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"); 
} 

Любое помощь оценили!

+0

Вы попробовали отладить свой код? –

+0

Нет синтаксических ошибок, которые я вижу:/ – ExiLe

+0

Ваш код никогда не будет компилироваться, если бы были синтаксические ошибки. Отладка приведет вас к обнаружению проблемы. Я дам вам подсказку: вещи исполняются в правильном порядке? –

ответ

0

Давайте рассмотрим предоставленный вами код и попытаемся понять, почему он не работает.

//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"); 
} 

Теперь, когда мы прошли через код, мы можем предложить новое решение. Давайте попробуем обновить цикл так, чтобы он подождал, чтобы напечатать число фибоначчи, пока ПОСЛЕ того, что мы проверили, чтобы убедиться, что он соответствует нашим условиям.

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]); 
    } 
} 
+0

Это имеет такой смысл. Большое спасибо. Мне было интересно весь день об этом, и речь шла о том, чтобы переключить порядок, в котором он напечатан. – ExiLe

+0

Что было бы, если бы я хотел заменить кратные 5 с другой фразой и кратным 7 с другой фразой? – ExiLe

+0

Прямо сейчас, как написано код, мы рассматриваем каждый случай 3 5 и 7 как одно и то же, ваш первый шаг должен состоять в том, чтобы сделать каждый из них своим делом – dustinroepsch