Вопрос № 98865: Здравствуйте эксперты!
Я только начинаю всой путь в мире Java, отучился первый семестр. У меня к вам, по вашим меркам, я полагаю, очень простой вопрос, а точнее просьба. Помогите мне, пожалуйста, со следующим кодом. Не могу до конца найти ош...
Вопрос № 98.865
Здравствуйте эксперты!
Я только начинаю всой путь в мире Java, отучился первый семестр. У меня к вам, по вашим меркам, я полагаю, очень простой вопрос, а точнее просьба. Помогите мне, пожалуйста, со следующим кодом. Не могу до конца найти ошибки:
public class UserList
{
public static void main(String[] args) throws IOException
{
string str1, str2 = "username";
int index;
int initialCapacity = 10;
BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in));
ArrayList users = new ArrayList();
System.out.print("Enter a user name: ");
str1 = dataIn.readLine();
while(str1.length() > 0)
{
if(str1 == str2)
System.out.println("That user name is NOT allowed!");
else
{
if(users.size() == initialCapacity)
{
System.out.println("List is full!");
System.out.println("Last entry is "+users.get(initialCapacity));
}
else
if(!users.contains(str1))
{
users.add(str1);
System.out.println("User \""+str1+"\" added to user list.");
}
else
System.out.println("User \""+str1+"\" already in user list.");
}
System.out.print("\nEnter a user name: ");
str1 = dataIn.readLine();
}
3. Исправлена проверка на конец данных. Если входных данных больше нет, метод readLine() вернет null, null.length() ведет к NullPointerException, поэтому проверять надо так:
while(str1 != null)
4. Строки (да и вообще все объекты) проверяются на равенство с помощью метода equals. Сравнение x == y проверяет, на один и тот же объект ссылаются x и y или на разные. То есть, результат будет false, даже если x и y ссылаются на одинаковые (имеющие одинаковое содержимое) объекты.
if(str2.equals(str1))
5. Элеменсты писка нумеруются от 0 до L-1, где L - длина списка. То есть, последний элемент имеет индекс L-1, а не L.
users.get(initialCapacity-1)
6. Ещё экранирующие поправил, но не знаю,так было в исходном тексте или при публикации добавились. Лучше текст программы писать в приложении.
Приложение:
Ответ отправил: Алексей Демаков (статус: Студент)
Ответ отправлен: 18.08.2007, 23:46 Оценка за ответ: 5 Комментарий оценки: Приветствую Вас Алексей Демаков,
Выражаю Вам большую благодарность за Вашу помощь. Ваш код мне очень помог. Так же, благодарю Вас за Ваши комментарии, все стало намного понятней.