Как правильно проверить на null
Подскажите, почему не работает проверка на null, приложение просто крашится.
package com.veboro.cvkom; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class Gaz extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_gaz); >public void gaz (View view) < EditText pop = (EditText) findViewById(R.id.pop); EditText tep = (EditText) findViewById(R.id.tep); TextView summa = (TextView) findViewById(R.id.textView); Double popFin = Double.parseDouble(pop.getText().toString()); Double tepFin = Double.parseDouble(tep.getText().toString()); if (popFin == null || tepFin == 0)< summa.setText("Всі поля обовязкові для заповнення"); >else < double result = (tepFin - popFin) * 6.87; summa.setText("До сплати " + String.format("%.2f", result) + " грн."); >> >
Отслеживать
66.6k 6 6 золотых знаков 54 54 серебряных знака 113 113 бронзовых знаков
задан 11 сен 2017 в 14:10
23 1 1 серебряный знак 9 9 бронзовых знаков
С какой ошибкой крашится? Добавьте в вопрос её полный текст.
11 сен 2017 в 14:15
Просто перезагружается, в логах нет прямых ошибок.
11 сен 2017 в 14:19
тогда как вы определили, что виновата проверка на null?
11 сен 2017 в 14:19
Если поля пусты то после нажатия кнопки все перезагружается, в ином случае все работает.
11 сен 2017 в 14:20
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
У вас очень странный код. Во-первых, EditText.getText() для пустого поля вернёт «». При попытке вызывать Double.parseDouble() с пустой строкой возникнет исключение NumberFormatException. Что у вас скорее всего и происходит. Но вы его перехватывать не пытаетесь, а вместо этого проверяете переменную popFin на null , которого там никак оказаться не может. Попробуйте так:
EditText pop = (EditText) findViewById(R.id.pop); EditText tep = (EditText) findViewById(R.id.tep); TextView summa = (TextView) findViewById(R.id.textView); String popFinVal = pop.getText().toString(); String tepFinVal = tep.getText().toString(); if (popFinVal.isEmpty() || tepFinVal.isEmpty()) < summa.setText("Всі поля обовязкові для заповнення"); >else < try < double popFin = Double.parseDouble(popFinVal); double tepFin = Double.parseDouble(tepFinVal); double result = (tepFin - popFin) * 6.87; summa.setText(String.format("До сплати %.2f грн.", result)); >catch(NumberFormatException exc) < summa.setText("Невірний формат"); >>
Как проверить Лонг на ноль в Java
Примитивные типы данных не могут быть null . Только типы данных Object могут быть null . int , long и т.д. не может быть null . Если вы используете long (класс-оболочка для long ), вы можете проверить null ‘:
Long longValue = null; if(longValue == null)
brso05 29 окт. 2014, в 19:18
Поделиться
Если переменная longValue имеет тип Long (класс оболочки, а не примитив Long ), то да, вы можете проверить нулевые значения. Первичная переменная должна быть инициализирована до некоторого значения явно (например, до 0 ), поэтому ее значение никогда не будет равно нулю.
manouti 29 окт. 2014, в 19:42
Поделиться
Если это объект Long , то вы можете использовать longValue == null или вы можете использовать метод Objects.isNull(longValue) в Java 8. Пожалуйста, просмотрите Объекты для получения дополнительной информации.
Diablo 10 март 2016, в 16:14
Поделиться
Вы можете проверить объект Long для нулевого значения с помощью longValue == null , вы можете использовать longValue == 0L для длинных (примитивных), потому что значение по умолчанию long равно 0L, но результат будет true, если longValue тоже равно нулю
Arif Ulusoy 29 окт. 2014, в 20:02
Поделиться
Конечно, примитивные типы не могут быть нулевыми. Но в Java 8 вы можете использовать Objects.isNull(longValue) для проверки. Ex. Если (Objects.isNull(longValue))
Srinath 25 янв. 2019, в 04:12
Поделиться
Как уже упоминалось, примитивы не могут быть установлены на тип объекта null. В таких случаях я просто использую -1 или Long.MIN_VALUE .
tammoj 01 окт. 2018, в 13:10
Поделиться
Так как примитивы (long) не могут быть нулевыми, они могут быть преобразованы в класс-оболочку этого типа примитивов (например, Long), и может быть выполнена проверка на null. Если вы хотите проверить, является ли длинная переменная нулевой, вы можете преобразовать это в Long и проверить,
long longValue=null; if(Long.valueOf(longValue)==null)
Pavithra 22 июнь 2017, в 08:34
Поделиться
Вы никогда не получите null значение для Long.valueOf() .
Vitalii Diravka 03 дек. 2018, в 11:11
Ещё вопросы
- 1 Конвертировать категорические признаки (Enum) в H2o в Boolean
- 0 Сохранить адрес узла списка ссылок
- 1 Использование экземпляра одноэлементного класса в качестве переменной уровня класса приемлемо?
- 0 Почему существует бесконечный цикл? C ++
- 1 tf.maximum не возвращает ожидаемый результат (новичок)
- 0 нг-повтор с фильтром и двойной порядок
- 1 Почему эмулятор не получает FCM Push
- 1 Регулярное выражение для сопоставления целых чисел
- 0 Установка MAMP на компьютер с установленным MySql и настройкой PHP на localhost?
- 0 Сайт AngularJS — полный или частичный
- 0 Java: Удалить строку mysql, если значение не существует в ArrayList
- 1 Переслать тело из ответа в точности так, как он приходит
- 0 Необходимо преобразовать 16-битные данные в 8-битные
- 1 Как отобразить сообщение только один раз, когда таймер достигает 15 секунд
- 0 Значок шеврона, направленный вверх или вниз в зависимости от положения гармошки
- 0 как избежать бесконечной анимации, вызванной несколькими нажатиями на элемент меню
- 0 mmap и выравнивание страниц данных — это увеличивает производительность?
- 0 вычислить std :: расстояние между двумя std :: reverse_iterators
- 0 Как условно создать другой раздел в угловом шаблоне (html файл)
- 1 Как отладить крюк Кордовы?
- 0 Не удается получить единый стиль в браузерах для календаря
- 1 Как выбрать и отменить выбор маркера в Google Maps?
- 1 Десериализация XML-файла в .Net Object
- 0 Ошибка: недопустимое значение для атрибута x = «NaN» в angularJS nvd3-multi-bar-chart
- 1 Как конфертировать из ICollection в IEnumerable?
- 1 Редактировать изображения в файле PDF с помощью объекта COSStream
- 1 Как открыть ссылки в новом окне браузера с помощью ie 11
- 0 Как переопределить прослушивание кликов для кнопки в веб-просмотре
- 0 Есть ли способ контролировать высоту выпадающего списка выбора?
- 0 Html.toHtml () не конвертирует текст RelativeSizeSpan ‘ed
- 0 Использование контроллеров, добавленных маршрутами, для объявления переменных $ scope в Angular JS?
- 0 PHP найти похожие ключи массива и сумму значений
- 0 Codeigniter — обязательное поле для проверки формы 2 с несоответствующим значением
- 0 Как придумать хороший дизайн?
- 0 Невозможно использовать скалярное значение в качестве массива — толчок массива
- 0 как не выбрать некоторые данные с помощью xpath в webharvest
- 0 Как перекомпилировать WinSCP без финализатора
- 0 Как создать и выполнить код в iframe в javascript
- 0 Сохраните данные JSON в текстовый файл и прочитайте его
- 1 Асинхронная проблема с несколькими задачами
- 0 Как использовать app / Resources / public в Symfony2
- 1 Java-шифрование числовых значений в буквенно-цифровые значения
- 0 Выполнение запроса занимает более 40 секунд
- 1 Как передать дополнительные аргументы объекту сервиса Google Pagespeed API
- 0 сохранение базы данных резервных копий mysql с использованием php и пути mkdir
- 1 Как я могу назвать класс из основного класса?
- 0 как удалить кнопки «одна страница», «две страницы»… «шесть страниц» в printpreviewdialog?
- 0 Ссылаясь на корневой каталог
- 0 как проверить, существует ли имя пользователя в angularjs
- 0 fancybox 2 и названия
Проверить на null [закрыт]
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.
Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.
Закрыт 3 года назад .
Определите и реализуйте общий статический метод, hasNull который возвращается, true если входной массив имеет null элемент, и в false противном случае. Sample Input 1: String There are elements of the array Sample Output 1: false
class ArrayUtils < public static boolean hasNull(T[] value) < if (value == null) < return true; >return false; > >
How to detect if a long type is actually NULL?
We have a nullable (type long) column (named referral) in our MySQL database. We use hibernate for ORM. I am trying to get the value of the column for a given member. Some are null, and if its not, its an id that points to another member whose is the referrer. The problem is in the java code I am trying to detect if that member’s column is null, if not, do something.
String referrerAffiliateId = Long.toString(member.getReferral()); if (referrerAffiliateId != null) < //do something >
member.getReferral() returns the value (type long) of the referral column. Some of those columns are null and some are not. The above code compiles fine, but I get a nullPointerException when I call the method on a user whose referral column is null. How do I properly do a detection on this? Thanks in advance! Full Answer: Thanks to @Marcelo for the best correct answer. Here is the code in its final state:
Long referrerAffiliateId = member.getReferral(); if (referrerAffiliateId != null) < //. >