si può fare così:
codice:
...
elif [ -f $i ]; then
    ext=${i##*.}
    if [ "$ext" = "$i" ]; then ext=""; fi

    if [ "$ext" = "java" ]; then
        ....
    elif [ "$ext" = "c" ]; then
        ....
    fi
fi
...
Visto che so già che mi chiederai cosa è ${i##*.}, ti dico che è una espansione un po' speciale. In pratica elimina tutto quello che c'è prima della estensione (*.). Con l'unico difetto che se non c'è estensione, ritorna esattamente il valore di $i (per questo c'è un test dopo).

Per maggiori info fai man bash e guarda nella sezione "Parameter Expansion".