I think you can reduce that code quite a bit:
$num_java_used_cpu = Get-Counter -ErrorAction SilentlyContinue '\Process(*)\% Processor Time' |
Select-Object -ExpandProperty countersamples | # get array of PerformanceCounterSample objects
Where-Object {$_.InstanceName -eq 'java'} | # get just the counters for java
Sort-Object -Property cookedvalue -Descending | # sort by cpu consumer
Select-Object InstanceName, @{L = 'CPU'; E = { [int]($_.Cookedvalue/$env:NUMBER_OF_PROCESSORS)} } -First 1 # get the largest CPU consumer
Format-Table $num_java_used_cpu