2016-10-10 6 views
-1

私は"fizz buzz" ArrayListの問題を試しています。私のプログラムは正常に動作し、n回目の反復まで意図したとおりに実行されます。値100と入力します。 「フィズの話題は」100まで実行されますと、結果を返すが、ループが終了する必要のために私は理解したように、余分な反復を行うと、n=50余分な10回の反復私のプログラムはループのために正しく終了しません

ためn=100余分な20回の反復
ためArrayList<String> numfb

に値を追加して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

に第二の条件であれば、他の不足している場合は、他に欠けていますところで、リストの最後に項目を追加したい場合は、 '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によって助けられました –

関連する問題