То чувство, когда закрываешь вопрос, надеясь, что найденный баг можно исправить и программа будет принята, а после становится только хуже.
В общем, вопрос по тому же, что в недавно созданном вопросе. Только теперь уже условие выполняется правильно: считываются числа из файла 1, разделенные пробелами, конвертируются и записываются в таком же формате в 2 файл.
ВВОД (файл 1)
3.49123 3.505754 3.512342 -3.495152 -3.50235325 -3.51535
ВЫВОД (файл 2)
3 4 4 -3 -4 -4
Метод isHereOnlyZeroes нужен для проверки всех чисел после 5 в дробной части минусового числа, чтобы убедиться, что там только нули. Ведь если там есть хотя бы одна единица, то уже должно быть -1.
Условие начало выполняться уже намного точнее, но вместо продвижения вперед до решения задачи, потерялись галочки с первого и последнего условия. Валидатор решил жестоко пошутить. Need help :) В основном помощь нужна с 1 и 4 условием. Почему не хочет выполняться?
P.S. Перед isHereOnlyZeroes в строке 37 еще есть !package com.javarush.task.task18.task1820;
/*
Округление чисел
*/
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Solution {
private static boolean isHereOnlyZeroes(char[] array) {
for(int i = 1; i < array.length; i++)
if(array[i] != '0')
return false;
return true;
}
public static void main(String[] args){
String file1 = "", file2 = "";
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
file1 = reader.readLine();
file2 = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
List<Integer> list = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(file1))) {
String numbers[] = reader.readLine().split(" ");
for(String s : numbers){
String[] parts = s.split("\\.");
if(parts[0].contains("-")) {
char[] array = parts[1].toCharArray();
if(array[0] >= '5' && isHereOnlyZeroes(array))
list.add(Integer.parseInt(parts[0]) - 1);
else
list.add(Integer.parseInt(parts[0]));
} else {
char[] array = parts[1].toCharArray();
if(array[0] >= '5')
list.add(Integer.parseInt(parts[0]) + 1);
else
list.add(Integer.parseInt(parts[0]));
}
}
} catch (IOException e) {
e.printStackTrace();
}
try (PrintWriter writer = new PrintWriter(new FileWriter(file2))) {
StringBuilder s = new StringBuilder();
for(int a : list)
s.append(a).append(" ");
writer.print(s.toString().trim());
} catch (IOException e) {
e.printStackTrace();
}
}
}