Преобразование чисел в строки и обратно
хотел бы узнать ваше мнение.
Начал изучать джава, и во всех курсах во всех книгах прописано что нужно создавать класс, потом метод и потом описание метода.
Тогда как понять вот такие советы на этом и других форумах)))
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, но тогда бы код стал более громоздким. Учитывайте также удобство чтения. Считается, что тело метода должно умещаться примерно на одном экране компьютера без прокрутки. Если это не так для какого-то метода, лучше его разбить на несколько методов.