ragazzi non c'è bisogno di fare nessun cast ne usare funzoini che separino la parte int da quella decimale ^^

entrambe temp e decimalValue dichiarate come short.
Prendendo il resto della divisione di %10 otteniamo proprio la prima cifra decimale nel casso avessimo diviso per 10

temp = decimalValue % 10;


poi essendo decimalValue già short, facendo
decimalValue=decimalValue / 10;

la parte decimale non viene salvata

e poi si continua con il while