• ,

com.javarush.task.task18.task1825 Работает, не проходит тестирование

Код рабочий, проверял. Пишет, что у меня не выполнено ни одно условие кроме 1-го

package com.javarush.task.task18.task1825;

/* 
Собираем файл
Собираем файл из кусочков.
Считывать с консоли имена файлов.
Каждый файл имеет имя: [someName].partN.
Например, Lion.avi.part1, Lion.avi.part2, …, Lion.avi.part37.
Имена файлов подаются в произвольном порядке. Ввод заканчивается словом «end«.
В папке, где находятся все прочтенные файлы, создать файл без суффикса [.partN].
Например, Lion.avi.
В него переписать все байты из файлов-частей используя буфер.
Файлы переписывать в строгой последовательности, сначала первую часть, потом вторую, …, в конце — последнюю.
Закрыть потоки.
Требования:
1. Программа должна считывать имена файлов с консоли, пока не будет введено слово "end".
2. Создай поток для записи в файл без суффикса [.partN] в папке, где находятся все считанные файлы.
3. В новый файл перепиши все байты из файлов-частей *.partN.
4. Чтение и запись должны происходить с использованием буфера.
5. Созданные для файлов потоки должны быть закрыты.
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
    public static void main(String[] args) throws IOException{
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<File> list = new ArrayList<>();
        while (true) {
            String name = reader.readLine();
            if (!name.equals("end"))
            list.add(new File(name));
            else break;
        }
/*Названия одинаковые, соответственно сортировка листа работает корректно от part1 до partN */
        Collections.sort(list);
        //файл создается в папке с предыдущими файлами
        String resultFile = list.get(0).getAbsolutePath().split(".part")[0] + "";
        File destFile = new File(resultFile);
        destFile.createNewFile();
        FileOutputStream outStream = new FileOutputStream(destFile);
//записывает все буфером
        for (File search : list) {
            FileInputStream inStream = new FileInputStream(search);
            byte[] buffer = new byte[inStream.available()];
            while (inStream.available() > 0) {
                int count = inStream.read(buffer);
                outStream.write(buffer,0,count);
            }
            inStream.close();
        }
        outStream.close();
        reader.close();
    }
}


Ввод:

*C:My programsCodingJavaRushTasks2.JavaCoresrccomjavarushtasktask18task1825avi.part3

C:My programsCodingJavaRushTasks2.JavaCoresrccomjavarushtasktask18task1825avi.part1

C:My programsCodingJavaRushTasks2.JavaCoresrccomjavarushtasktask18task1825avi.part2

end*

Вывод: (создается файл «avi» который содержит инфу 1,2,3 файлов в этой последовательности) «OneTwoThree»
  • ,

level18.lesson10.home08 не проходит тестирование. Работает по условию. Я так думаю

Товарищи, помогите разобраться с задачей. Все работает, но проверку не проходит.

/* Нити и байты
Читайте с консоли имена файлов, пока не будет введено слово «exit»
Передайте имя файла в нить ReadThread
Нить ReadThread должна найти байт, который встречается в файле максимальное число раз, и добавить его в словарь resultMap,
где параметр String — это имя файла, параметр Integer — это искомый байт.
Закрыть потоки. Не использовать try-with-resources
*/

public class Solution {
    public static Map<String, Integer> resultMap = new HashMap<String, Integer>();

    public static void main(String[] args) throws IOException, InterruptedException {
        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
        String s;
        while (!(s = buf.readLine()).equals("exit")){
            new ReadThread(s).start();

        }
        buf.close();

    }

    public static class ReadThread extends Thread {
        String fileName;
        public ReadThread(String fileName) {
            this.fileName = fileName;
            //implement constructor body
        }
        public void run(){
            try {
                FileInputStream file = new FileInputStream(fileName);
                Map<Integer,Integer> map = new TreeMap<>();
                byte [] bytes = new byte[file.available()];
                file.read(bytes);
                int count = 0, max=1;
                for (int i = 0; i < bytes.length ; i++) {
                    for (int j = 0; j < bytes.length; j++) {
                        if (bytes[i] == bytes[j]) count++;
                    }
                    if (count>max) max = count;
                    map.put((int) bytes[i],count);
                    count=0;
                }

                for (Map.Entry entry: map.entrySet()) {
                    Integer key = (Integer) entry.getKey();
                    Integer value = (Integer) entry.getValue();
                   if (value.equals(max)) {
                        synchronized (this){
                            resultMap.put(fileName,key);
                        }
                   }

                }
                file.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }// implement file reading here - реализуйте чтение из файла тут
    }
}
  • ,

level18.lesson10.home05

/* Округление чисел
Считать с консоли 2 имени файла
Первый файл содержит вещественные(дробные) числа, разделенные пробелом. Например, 3.1415
Округлить числа до целых и записать через пробел во второй файл
Закрыть потоки. Не использовать try-with-resources
Принцип округления:
3.49 - 3
3.50 - 4
3.51 - 4
-3.49 - -3
-3.50 - -3
-3.51 - -4
*/

import java.io.*;

public class Solution {
    public static void main(String[] args) throws IOException, NumberFormatException{

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String is1 = reader.readLine();
        String is2 = reader.readLine();



        BufferedReader reader1 = new BufferedReader(new FileReader(is1));

        FileWriter is = new FileWriter(is2);

        String[] result;


        result = reader1.readLine().split(" ");



        String x = "";

        
        for (int i = 0; i < result.length;i++ )
        {
            x += Math.round(Double.parseDouble(result[i])) + " ";
        }
        is.write(x.trim());


        reader1.close();
        is.close();

    }

}


Валидатор не принимает. Результат вроде выводит правильный, переписал без пробела в конце. Помогите пожалуйста, что не так в решении?
  • ,

javarush.test.level18.lesson03.task03

Почему не компилируется на сервере?
выводит все правильно…

/* Самые частые байты
Ввести с консоли имя файла
Найти байты, которые чаше всех встречаются в файле
Вывести их на экран через пробел.
Закрыть поток ввода-вывода
*/

Ладно, я все же решил ее добавив в компилятор на сайте. Все дело оказывается в форматирование.
Если IDEA принимает строку if(...) a+b; то тут надо if(...) {a+b;}