2014-02-10 6 views
2

Я хочу проверить, имеет ли длина введенных строк от 3 до 8 символов. Раньше я использовал if condition, и он работал. Однако, когда я ввел некоторую подстроку из строки, один из if statements не работает. Может кто-нибудь помочь мне понять, почему. Благодарю.Android - Проверьте длину строки

Мои коды является

Рабочий код:

text = et.getText().toString(); 
    l = text.length(); 
    a = text.substring(0, 1); 
    if (l >=9) tv.setText("Invalid length!!! Please check your code"); 
    if (l <= 2) tv.setText("Invalid length! Please check your code"); 

И вот, второй if statement doesnt работы.

text = et.getText().toString(); 
l = text.length(); 
a = text.substring(0, 1); 
c = text.substring(1, 2); 
d = text.substring(3, 4); 
e = text.substring(4); 
if (l >=9) tv.setText("Invalid length!!! Please check your code"); 
if (l <= 2) tv.setText("Invalid length! Please check your code"); 

ответ

3

Вы должны убедиться, что вы обрабатываете пустую строку, а также гарантируете, что ваша строка находится в пределах, которые вы хотите. рассмотрите:

text = et.getText().toString(); 
if (text == null || text.length() < 3 || text.length > 8) { 
    tv.setText("Invalid length, should be from 3 to 8 characters. Please check your code"); 
} else { 
    a = text.substring(0,1); 
    b = text.substring(1,2); 

    c = text.substring(3,4); 
    if (text.length() > 3) { 
     d = text.substring(4); 
    } else { 
     d = null; 
    } 
} 
2

Вы должны проверить длину, прежде чем пытаться создать подстроки, так как если длина слишком коротка индексы подстроки являются недействительными. Попробуйте следующее:

text = et.getText().toString(); 
l = text.length(); 
if (l >= 9 || l <= 2) { 
    tv.setText("Invalid length!!! Please check your code"); 
} else { 
    a = text.substring(0, 1); 
    c = text.substring(1, 2); 
    d = text.substring(3, 4); 
    e = text.substring(4); 
} 
+1

Спасибо. Оно работает. Я не понимаю, что я пытаюсь проверить длину исходной строки и как это влияет на подстроки. Извините за задание слишком много вопросов. Я новичок в программировании на Java/Android. – AUJ

+0

@AUJ - Если исходная строка слишком короткая, то некоторые вызовы подстроки могут вызывать исключение. Например, если строка «Привет», то попытка выполнить 'c = text.substring (1,2)' будет пытаться получить доступ к 3-му символу, который не существует. Вот почему вам нужно избегать этих вызовов, когда проверка длины указывает на проблему. –

+0

Большое спасибо Теду. Это сэкономило мне много времени. Я боролся с этим часами :( – AUJ

Смежные вопросы