Привет, я пытаюсь решить задание "забег улиток" в котором как только любая из "улиток" наберет 50 очков - игра останавливается. 
Не пойму почему 
if (tab[z] < 50) не работает и цикл завершается где-то в районе 18 или 20? 
Тогда как если заменить на
while (tab[z] < 50) - принцип работает но немного криво - массив проверяется на то чтобы все его элементы дошли до состояния меньше 50 - так что while не подходит.
Не пойму в чём дело? Ведь при использовании
if применимо к каждому элементу массива программа должна запускаться каждый раз когда элемент < 50 а он почему-то останавливается..
Спасибо!
public static void main(String[] args) {
        int dice;
        int[] tab = new int[3];
        System.out.println("\n\t -= SNAIL RUN =- ");
        for (int z=0; z<tab.length;z++){
            if (tab[z] < 50)  {
                System.out.println("\n");
                for (int i=0; i<tab.length; i++) {
                    // Generating random numbers
                    dice = ThreadLocalRandom.current().nextInt(1, 6 + 1);
                    tab[i] += dice;
                    System.out.print("Dice"+(i+1)+"="+dice+" | ");
                }
                System.out.println("\n");
                for (int i=0; i<tab.length; i++){
                    System.out.print(tab[i] + " | ");
                }
                System.out.println("\n________________________________________________________________");
            }
        }
        System.out.println("\nGAME OVER");