• 0.00

  • 0.00

level18.lesson10.bonus02 не проходит тестирование?

Доброго времени суток! Помогите, пожалуйста, с задачей. Не могу понять, почему не принимается решение.

Прайсы

CrUD для таблицы внутри файла. Считать с консоли имя файла для операций CrUD. Программа запускается со следующим набором параметров:

-c productName price quantity

Значения параметров:

где id — 8 символов.
productName — название товара, 30 chars (60 bytes).
price — цена, 8 символов. quantity — количество, 4 символа.

-c — добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле.

В файле данные хранятся в следующей последовательности (без разделяющих пробелов): id productName price quantity Данные дополнены пробелами до их длины.

Пример:

19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234

import java.io.*;
    import java.util.ArrayList;
    public class Solution {
    static String result = "";
    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String file = reader.readLine();
        reader.close();
        if (args.length==0 || args.length<4) return;
        if (args[0].equals("-c")){
            String new_id = makeId(file);
            String new_product = makeProduct(args[1]);
            String new_price = makePrice(args[2]);
            String new_quantity = makeQuantity(args[3]);
            result = new_id + new_product + new_price + new_quantity;
            FileWriter writer = new FileWriter(file,true);
            writer.write("\r\n" + result);
            writer.close();
        }
    }
    public static String makeId(String file)throws IOException{
        ArrayList<Integer> list = new ArrayList<Integer>();
        FileReader fr = new FileReader(file);
        BufferedReader reader = new BufferedReader(fr);
        String line = reader.readLine();
        while (line != null) {
            line = line.substring(0,8).trim();
            list.add(Integer.parseInt(line));
            line = reader.readLine();
        }
        int max = Integer.MIN_VALUE;
        for (Integer i:list)
            if (i>max)
                max = i;
        max++;
        String max_id = Integer.toString(max);
        if (max_id.length()>8)
            max_id = max_id.substring(0,8);
        if (max_id.length()<8)
            for (int i = max_id.length(); i < 8; i++)
                max_id = max_id + " ";
        fr.close();
        reader.close();
        return max_id;
    }
    public static String makeProduct(String product){
        String str = product;
        if (str.length()>30)
            str = str.substring(0,30);
        if (str.length()<30)
            for (int i = str.length(); i < 30; i++)
                str = str + " ";
        return str;
    }
    public static String makePrice(String price){
        String str = price;
        if (str.length()>8)
            str = str.substring(0,8);
        if (str.length()<8)
            for (int i = str.length(); i < 4; i++)
                str = str + " ";
        return str;
    }
    public static String makeQuantity(String quantity){
        String str = quantity;
        if (str.length()>4)
            str = str.substring(0,4);
        if (str.length()<4)
            for (int i = str.length(); i < 4; i++)
                str = str + " ";
        return str;
    }
 }

Вопрос по задаче com.javarush.test.level18.lesson10.home06

Доброго времени суток! Возник вопрос по задаче. Решил таким способом (см. код). Вроде, все ок, но сервер не принимает. Можете навести на мысль? А то уже глаз замылился…

/* Встречаемость символов
Программа запускается с одним параметром - именем файла, который содержит английский текст.
Посчитать частоту встречания каждого символа.
Отсортировать результат по возрастанию кода ASCII (почитать в инете). Пример: ','=44, 's'=115, 't'=116
Вывести на консоль отсортированный результат:
[символ1]  частота1
[символ2]  частота2
Закрыть потоки. Не использовать try-with-resources

Пример вывода:
, 19
- 7
f 361
*/

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

        HashMap<Integer,Integer> map = new HashMap<Integer, Integer>();

        for (int i = 0; i < 128; i++)
            map.put(i, 0);

        FileInputStream fileInputStream = new FileInputStream(args[0]);

        while (fileInputStream.available()>0){
            int i = fileInputStream.read();
            int count = map.get(i);
            count++;
            map.put(i,count);
        }

        for (Map.Entry<Integer,Integer> el:map.entrySet())
            if(el.getValue()>0){
                int i = el.getKey();
                System.out.println((char)i + " " + el.getValue());
            }

        fileInputStream.close();
    }
}

Правильное использование try catch

Всем доброго времени суток!
Хотел попросить совета. Получил на собеседование тестовое задание — написать консольное приложение для выполнения некоторых действий над БД. Одним из условий задания является написанием класса для работы с БД по правилам JavaBeans . Как я понял, данные правила утверждают, что экземпляр поля класса инициализируются через сеттеры, а конструктор остается дефолтным-пустым.
Предположим, что у меня есть два поля класса — число
int N
и строка подключения к БД
String S
.
Число N должно вводиться с консоли. Я решил вставить проверку на корректность введенного числа (вдруг пользователь введет что-то вроде «1.2» или «1/////2!?*(»). И возник вопрос:
Где нужно делать проверку с помощью
try{}catch(Exception err){}
? В главном классе? Или в классе БД (в самом сеттере)?

Статичный и обычный класс

Здравствуйте.
После изучения теории и решения задач возник вопрос. Чем же отличаются статичные и обычные классы?
У обычного класса может быть сколько угодно экземпляров. У статичного — экземпляров быть не может.
Когда дошел до 5 уровня, 12 урока, 3-ей задачи, немного потерялся.
/* Man and Woman
1. Внутри класса Solution создай public static классы Man и Woman.
2. У классов должны быть поля: name(String), age(int), address(String).
3. Создай конструкторы, в которые передаются все возможные параметры.
4. Создай по два объекта каждого класса со всеми данными используя конструктор.
5. Объекты выведи на экран в таком формате [name + " " + age + " " + address].
*/
И действительно — получилось создать несколько экземпляров статичного класса в методе main.
Поэтому появился вопрос:
Правильно ли я понимаю различия этих типов классов?