2016-10-10 5 views
-1

Я пытаюсь использовать «fizz buzz» проблема с ArrayList. Моя программа работает нормально и выполняется так, как предполагалось, до n-й итерации. Предположим, что введено значение 100. «Шипение гудение» запускается на выполнение до 100 и возвращает результат, но делает дополнительные итерации и добавляя значение ArrayList<String> numfbмоя программа не заканчивается для правильной петли

для n=100 дополнительных 20 итераций
для n=50 дополнительных 10 итераций

Как я понимаю цикл должен закончиться после i<n, которые представляют собой число итераций и значения, добавленные в список массивов.

Вот мой код:

int i , n; 
String temp; 
Scanner input = new Scanner (System.in); 
ArrayList<Integer> number=new ArrayList<Integer>(); 
ArrayList<String> numfb=new ArrayList<String>(); 
System.out.println("enter array range"); 
n=input.nextInt(); 
for(i=0; i<n; i++){ 
    number.add(i,i+1); 
} 
for(i=0; i<n ;i++){ 
    if(!((number.get(i)) % 3==0) || ((number.get(i)) % 5==0)){ 
    temp=String.valueOf(number.get(i)); 
    numfb.add(i,temp); 
    } 
    if((number.get(i)) % 5==0 && (number.get(i)) % 3==0){ 
    numfb.add(i,"FizzBuzz"); 
    } 
    else if((number.get(i)) %3 == 0){ 
    numfb.add(i,"Fizz"); 
    } 
    else if((number.get(i)) % 5 == 0){ 
    numfb.add(i,"Buzz"); 
    } 
} 
System.out.println(number); 
System.out.println(numfb); 
+2

вы пропускаете еще, если на второе условие в цикле –

+0

BTW, вам не нужно использовать 'list.add (index, item)', если вы хотите добавить элемент в конец списка. Просто используйте 'list.add (item)'. – Pshemo

+0

Пожалуйста, помогите нам с некоторыми [дополнительными методами отладки] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Если у вас все еще есть проблемы после этого, пожалуйста, не забудьте вернуться с более подробной информацией. –

ответ

0

Вы пропускаете еще если вы на втором состоянии в цикле

if(!((number.get(i)) % 3==0) || ((number.get(i)) % 5==0)){ 
    temp=String.valueOf(number.get(i)); 
    numfb.add(i,temp); 
    } 
    else if((number.get(i)) % 5==0 && (number.get(i)) % 3==0){ 
    numfb.add(i,"FizzBuzz"); 
    } 
    else if((number.get(i)) %3 == 0){ 
    numfb.add(i,"Fizz"); 
    } 
    else if((number.get(i)) % 5 == 0){ 
    numfb.add(i,"Buzz"); 
    } 
+0

Thanx помог –

Смежные вопросы