Как бы я ни любил массивы и файловый ввод-вывод, я не знаю, было ли много мяса в сегодняшней работе. Массивы содержат списки таких вещей, как целые числа, двойные числа, строки, объекты и т. д., и к ним можно получить доступ по индексу, который начинается с 0. В отличие от JS, тип данных элементов в списке должен быть однородным. Я все еще привыкаю к ​​синтаксису объявления и работы с массивами. В частности, литералы массивов.

Например, в одном из повседневных действий я обнаружил, что мне действительно нужны некоторые из методов, которые я использовал в Javascript, для таких вещей, как поиск определенного значения в массиве или запуск map, filter или reduce, как я делаю в JS. . Все то же самое можно сделать и на Java, просто мне кажется, что код намного больше.

Мы также рассмотрели базовый файловый ввод-вывод. Открытие файла и запись в файл. Чтение из файла. Все это довольно просто. У нас не было никаких изменений, чтобы поиграть с чем-либо, кроме обычных строковых данных, но, глядя на классы File и FileWriter, а также FileWriterStream, все остальные вещи можно легко сделать.

Ежедневным проектом сегодня было реализовать простой калькулятор RPN со стеком. Думаю, я проделывал это как минимум пять раз, так что написать версию для Java было совсем неплохо. Возможно, самым интересным аспектом задачи была обработка неправильного пользовательского ввода.

Я решил использовать двухуровневый подход. Если пользователь хотел выполнить такую ​​операцию, как сложение, а в стеке не оказалось двух чисел, моя программа выдает ошибку, и эта ошибка обрабатывается вызывающей функцией.

public static Double[] popTwo(Stack theStack) throws Exception {
    // try to pop two values and return them in an array
    // catch any errors
    Double[] operands = new Double[2];
    try {
        operands[0] = ((Double)theStack.pop());
        operands[1] = ((Double)theStack.pop());
    } catch (Exception e) {
        System.out.println("Sorry, not enough values on the stack!");
        // if we popped just one value but not the second, restore the first
        // value by pushing it on the stack
        if( operands[0] != null ) {
            theStack.push(operands[0]);
        }
        throw new Exception("Problems popping.");
    }
    return operands;
}

Единственная интересная вещь здесь заключается в том, чтобы убедиться, что если мы вытолкнули одно значение из стека, мы хотим восстановить это значение до того, как будет выдано исключение.

На втором уровне моего подхода, когда пользователь вводит что-то кроме числа, parseDouble выдает NumberFormatException, который я ловлю и предлагаю пользователю ввести число. Код ожидает другого ввода от пользователя.

Сегодня у меня тоже был полдня на собеседование на месте. Я закончил всю свою ежедневную работу, и завтра мы получим новый еженедельный проект, который я смогу завершить в пятницу или на выходных.