Застрял с использованием string.функция length()?

#android #crash

#Android #сбой

Вопрос:

Я только начал работать на Java и Android. Этот веб-сайт уже мне очень помог.

Здесь я застрял с чем-то очень простым. На другом языке у меня никогда не было проблем, но там..

Если я попробую следующее, у меня не будет ошибки в eclipse, но после запуска в эмуляторе произойдет сбой программного обеспечения в строке «если».

 String message = mOutEditText.getText().toString();

        if (message.length() > 4) {
  

Если я использую if (8> 4) {, то у меня нет проблем.

Я также пытался if (message.toString.length() > 4) { без какого-либо успеха.

Спасибо за вашу помощь.

Комментарии:

1. Вы отлаживали свою программу и проверяли?

2. что говорит logcat? это исключение нулевого указателя?

3. Может ли случиться так, что ваша message переменная является null ? Какого рода ошибку вы получаете?

4. Поделитесь своим полным кодом и LogCat, это, вероятно, легко исправить. Вы также правильно инициализируете mOutEditText?

5. @Harinder Если вы попытаетесь вызвать любой метод для нулевого объекта, вы получите NPE.

Ответ №1:

Трудно сказать, не зная ошибки, но практически единственное, что может пойти не так с этой строкой, — это NullPointerException т. е. Когда у вас возникает эта проблема, это потому, что:

 String message = mOutEditText.getText().toString();
  

эффективно решает:

 String message = null;
  

Скорее всего, это потому, что в вашем EditText файле нет текста (судя по имени вашей переменной, я предполагаю, что вы используете EditText ).

Вы можете учесть этот случай, убедившись, что это message не null так. Вот один из способов сделать это:

 if (message != null amp;amp; message.length() > 4) {
  

Комментарии:

1. Да, Гэри Буйн, это правильно. На самом деле я привык, что эта функция возвращает 0 и не вылетает на другом языке. Я привык к C / VB / PHP, а Java действительно отличается, я думаю, мне предстоит непростая работа! Спасибо 🙂

2. @Lemon Да, в Java null != 0 в отличие от C.

Ответ №2:

Например, вы инициализируете сообщение как статическую строку типа «Переполнение стека» и пытаетесь

 message.length();
  

если это работает, то с функцией toString() проблем нет.

Желаю удачи..!!

Ответ №3:

В String есть два способа получения длины строки: -это работает должным образом

String message=»»; защищенная пустота при создании (пакет сохранен в InstanceState){ s.length();}