Преобразование чисел в строки и обратно

хотел бы узнать ваше мнение.

Начал изучать джава, и во всех курсах во всех книгах прописано что нужно создавать класс, потом метод и потом описание метода.

Тогда как понять вот такие советы на этом и других форумах)))

        double a = (doppoint1.getText() == null) ? 0 : Double.parseDouble(doppoint1.getText().toString());
        double b = (doppoint2.getText() == null) ? 0 : Double.parseDouble(doppoint2.getText().toString());
        point4.setText (String.valueOf (a * b));

Насколько я понял мы создаем переменную вdouble a,b и в этом коде прописываем if-else c помощью тернарного оператора ?. Немного пробывал модифицировать под свое приложение как понимаю создается 2 переменные, которые которые приравнивают doppoint1 и doppoint2 к null(то есть к пустоте) если в строке ничего нет то выполняется 0, если туда введут что то, то выполняется второй алгоритм после : String.valueOf (a * b) по идее эта комбинация должна преобразовать дабл значение в строку и поместить в другой эдит.

Короче вопрос такой, почему такие коды не обернуты в класс и метод? или метод onCreate является главным и его достаточно?

И да при запуске приложения из за этого кода лаяут крашится просто(((


Ответы (1 шт):

Автор решения: Кирилл Малышев

Это неверный код. getText не возвращает null. Тут, скорее, Double.parseDouble нужно обернуть в try-catch, т.к. в EditText может быть не введено число.

Что-то вроде такого:

static double stringToDouble(String s) {
    try {
      return Double.parseDouble(s);
    }
    catch(NumberFormatException e)
    {
      return 0;
    }
double a = stringToDouble(doppoint1.getText().toString())
double b = stringToDouble(doppoint2.getText().toString())
point4.setText(String.valueOf (a * b));

Если отвечать на ваш вопрос про оборачивание в классы и методы, то в Java по сути почти любой значимый код находится в каком-то методе, а метод внутри класса. Не нужно пытаться оборачивать каждую строчку кода в отдельный метод. Исходите их соображений удобства. Выделяйте отдельные куски кода, которые решают обособленную подзадачу. Методы позволяют избежать повторов в коде. В примере выше я бы мог не писать метод stringToDouble, а дважды использовать конструкцию try-catch, но тогда бы код стал более громоздким. Учитывайте также удобство чтения. Считается, что тело метода должно умещаться примерно на одном экране компьютера без прокрутки. Если это не так для какого-то метода, лучше его разбить на несколько методов.

→ Ссылка