Прошу помощи. Откатал решение на всех (по моему мнению) возможных типах и везде вывод верный. Есть решение попроще, но хотелось бы чтобы именно этот вариант прошел, уж больнт долго я оттачивал это решиение. Заранее премного благодарен!
package com.javarush.task.task18.task1820;
/*
Округление чисел
*/
import java.util.*;
import java.io.*;
import java.text.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader red = new BufferedReader(new InputStreamReader(System.in));
String fileName1 = red.readLine();
String fileName2 = red.readLine();
red.close();
FileInputStream fis = new FileInputStream(fileName1);
FileOutputStream fos = new FileOutputStream(fileName2);
ArrayList<Integer> ara = new ArrayList<>();
byte [] buffer = new byte[ara.size()];
String s = "";
String digit = "";
String digitbefore = "";
String digitafter = "";
int tmp = 0;
while (fis.available()>0){
s = s + Character.toString((char)fis.read());
}
if (!s.endsWith(" ")) {
s = s + " ";
}
while (true){
if(s.startsWith(" ")){
s = s.substring(1);
}
if(!s.startsWith(" ")){
break;
}
}
for (int i = 0; i < s.length(); i++) {
if (s.substring(i,i+1).equals(" ")) {
digit = s.substring(tmp, i);
tmp = i+1;
if(digit.contains(".")){
for(int j=0; j < digit.length(); j++){
if(digit.substring(j,j+1).equals(".")) {
digitbefore = digit.substring(0, j);
digitafter = digit.substring(j + 1);
if (Integer.parseInt(digitbefore) > 0) {
if (Integer.parseInt(digitafter) >= 50) {
ara.add(Integer.parseInt(digitbefore ) + 1);
} else {
ara.add(Integer.parseInt(digitbefore));
}
}
if (Integer.parseInt(digitbefore) < 0) {
if (Integer.parseInt(digitafter) >= 50) {
ara.add(Integer.parseInt(digitbefore));
} else {
ara.add(Integer.parseInt(digitbefore) + 1);
}
}
if (Integer.parseInt(digitbefore) == 0) {
ara.add(Integer.parseInt(digitbefore));
}
}
}
}
else{
ara.add(Integer.parseInt(digit));
}
}
}
for (int i = 0; i < ara.size()-1; i++){
String f = String.valueOf(ara.get(i));
fos.write(f.getBytes());
fos.write(' ');
}
fos.write(String.valueOf(ara.get(ara.size()-1)).getBytes());
fis.close();
fos.close();
}
}