Друзья, помогите, пожалуйста, свежим взглядом. Все работает, но валидатор не пропускает.
1й файл (входной):
12 -3.432 -9.5 5.6 -789 5.5 0 3432.1
2й файл (выходной):
12 -3 -9 6 -789 6 0 3432
Бьюсь уже несколько дней...package com.javarush.task.task18.task1820;
/*
Округление чисел
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) {
try {
BufferedReader rdr = new BufferedReader(new InputStreamReader(System.in));
String f1Name = rdr.readLine();
String f2Name = rdr.readLine();
rdr.close();
FileInputStream fis1 = new FileInputStream(f1Name);
byte[] fis1Data = new byte[fis1.available()];
fis1.read(fis1Data);
fis1.close();
ArrayList<Float> inData = ByteArrToFloatArrListParsing(fis1Data );
PrintStream ps = new PrintStream(f2Name);
for(Float num : inData) ps.print(FloatRoundingToInt(num) + " ");
ps.close();
} catch (Exception e){}
}
private static ArrayList<Float> ByteArrToFloatArrListParsing(byte[] inArr){
ArrayList<Float> outAL = new ArrayList<>(inArr.length);
String curStr = "";
for(byte symb : inArr){
if (symb == " ".getBytes()[0]) {
outAL.add(Float.parseFloat(curStr));
curStr="";
}else{
curStr+=String.valueOf((char) symb);
}
}
outAL.add(Float.parseFloat(curStr));
return outAL;
}
private static int FloatRoundingToInt(Float fltNum){
int intNum;
int numBeforeDot = fltNum.intValue();
float numAfterDot = fltNum - numBeforeDot;
if (fltNum >= 0) {
if (Math.abs(numAfterDot) < 0.5) intNum = numBeforeDot;
else intNum = numBeforeDot + 1;
} else {
if (Math.abs(numAfterDot) <= 0.5) intNum = numBeforeDot;
else intNum = numBeforeDot - 1;
}
return intNum;
}
}