Как бы я ни любил массивы и файловый ввод-вывод, я не знаю, было ли много мяса в сегодняшней работе. Массивы содержат списки таких вещей, как целые числа, двойные числа, строки, объекты и т. д., и к ним можно получить доступ по индексу, который начинается с 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
, который я ловлю и предлагаю пользователю ввести число. Код ожидает другого ввода от пользователя.
Сегодня у меня тоже был полдня на собеседование на месте. Я закончил всю свою ежедневную работу, и завтра мы получим новый еженедельный проект, который я смогу завершить в пятницу или на выходных.