Hatta şöyle yaparsan, hem daha kolay okunur, hem de sorumluluklarına göre fonksiyonları ayırmış olursun. @Mf.Rub;

package com.company;
import java.util.*;

public class Main {

    public static void main(String[] args) throws Exception {
        //Dizinin ilk n adet elemanını dizinin sonuna atayan ve baştaki elemanları sıfırlayan program.

        int dizi[] = {4, 8, 3, 1, 18, 9, 21, 20, 5, 17};

        try{
            nAdetElemaniDizininSonunaAta(dizi, 6);
            ekranaBas(dizi);
        }catch(Exception e){
            System.out.println(e);
        }
    }

    private static void nAdetElemaniDizininSonunaAta(int[] dizi, int n) throws Exception{
        if(dizi == null || n > dizi.length){
            throw new Exception("Hatalı girdi! \ndizi boyutu: " + dizi.length + "\nn: " + n);
        }
        int lastIndex = dizi.length - 1;

        for (int i = lastIndex; i >= 0; i--){
            if(n != 0){
                dizi[i] = dizi[--n];
            }else{
                dizi[i] = 0;
            }
        }
    }

    private static void ekranaBas(int[] dizi){
        for(int eleman:dizi)
            System.out.println(eleman);
        }
    }