java tricky programs