Andrey Nemoffнемного самокритики :)
Не не я знаю лучше. Там был какой то калькулятор емнип, и то он не работал
на самом деле калькулятор сложная вещь. мне как то на собесе попросили в реальном времени написать функцию калькулятора. Я сразу завис если честно.... Там и скобки и правильно расставлять приоритеты операций если без них. Мне сказали, что я должен был написать это за минуту так как эта задача для джуна и что я не прошел. Я же пожелал им удачи. :)
Andrey Nemoffна самом деле калькулятор сложная вещь. мне как то на собесе попросили в реальном времени написать функцию калькулятора. Я сразу завис если честно.... Там и скобки и правильно расставлять приоритеты операций если без них. Мне сказали, что я должен был написать это за минуту так как эта задача для дж
Так епт
Всем спокойного утра!
Сегодня я покажу вам очень крутую JAVA штучку, и сделаем полноценный калькулятор в пару строк.
Intro
И так, работать мы сегодня будем с JShell. Вы скажите, чел, это утилита командной строки(АНАЛог Python REPL). Да так и есть, но еще у нее есть JDK API(как то так), оно позволяет нам использовать JShell прямо в коде.
Начало
Долго тянуть не будем, поэтому сразу за код.
Создаем класс и главный метод, а в нем пишем:
try (JShell shell = JShell.create()) {
} catch (Exception e) {
e.printStackTrace();
}
И не забудте импортировать Необходимое:
import jdk.jshell.*;
import java.util.List;
Здесь мы инициализировали JShell.
Теперь дальше:
в этом же try-catch пишем:
List<SnippetEvent> ses = shell.eval("int i = 5 * 2;"); // любое Java выражение, или кусок кода.
for (SnippetEvent se : ses) {
System.out.println(se.value());
}
Здесь мы даем JShell API вычислить наш кусок кода, или выражение, а потом собираем результат.
Давайте напишем калькулятор!
И так. 2 класса.
начнем с первого, класс Calc.java:
// Импортируем JShell.
import jdk.jshell.JShell;
import jdk.jshell.Snippet;
import jdk.jshell.SnippetEvent;
import java.util.List;
public class Calc {
private final JShell shell = JShell.create(); // Создаем JShell.
public void shutdown() {
Runtime.getRuntime().addShutdownHook(new Thread(shell::close)); // Закрываем ее при завершении работы программы.
}
/**
* Метод, который решает уравнение, введеное пользователем. Сердце нашего калькулятора.
* @param input - Строка-уровнение, которую нужно вычеслить.
* @return - возвращает результат вычеслений.
*/
public String calc(String input) {
List<SnippetEvent> events = shell.eval("var x = " + input + ";");
SnippetEvent event = events.getFirst();
if (event.status() == Snippet.Status.VALID) { // Проверка на валидный ввод.
return event.value();
} else {
return "Error: invalid expression";
} // Вычисл… Читать полностью →
Andrey Nemoffя тогда был на собесе по пыху. а делать eval от пользователя - это опасно... поэтому я такое даже не рассматривал. Но скорее всего от меня ждали что то в этом духе. :)
Я кстати еще до этого калькулятора делал кальк с помощью Python и ProcessBuilder на java
Andrey Nemoffя в короткие решения не верю. :) Мне что бы на javaFx написать простой помодоро таймер пришлось столько файлов сделать в проекте. :)
Для простого таймера чето слишком много
Илон Маск заявил, что уже к концу этого года программирование может стать ненужным.
"Кодирование - это промежуточный этап, который, вероятно, уже не будет нужен к концу этого года", - сказал миллиардер.
Маск считает, что искусственный интеллект сможет создавать машинный код эффективнее, чем традиционные программы-компиляторы. - Опять эта песня...
Andrey NemoffИлон Маск заявил, что уже к концу этого года программирование может стать ненужным.
"Кодирование - это промежуточный этап, который, вероятно, уже не будет нужен к концу этого года", - сказал миллиардер.
Маск считает, что искусственный интеллект сможет создавать машинный код эффективнее, чем традиц
Пиздабол
Andrey NemoffПочему они все приебались именно к программистам? У них какая-то навязчивая идея убрать программистов. Этот говорит вообще - бинарный код. То есть люди я так понял вообще не смогут понять какая там логика. Тебе Ии генерит черный ящик, бери и пользуйся.
Ну раньше я знаю программисты была элитной профессией