Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Ошибочка

Ответить
Настройки темы
Java - Ошибочка

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте, не подскажите где ошибка?
Код: Выделить весь код
package test;

public class Test {

	public static void main(String[] args) {
		
		String S = "Hello";
		String S1 = "world";
		S += ", " + S1 + "!";

		String parts[] = S.split(" ");
		String parts1[] = S.split(" и");
		System.out.println(parts1[2]);
	}

}
Вот часть из учебничка
Цитата:
Метод split(String regExp) разбивает строку на фрагменты, используя в качестве разделителей символы, входящие в параметр regExp, и возвращает ссылку на массив, составленный из этих фрагментов. Сами разделители ни в одну подстроку не входят.
String parts[] = S.split(" "); // Разбили строку S на отдельные слова, используя пробел в качестве разделителя, в результате получили массив parts, где parts[0] = "Привет,", а parts[1] = "мир!"
String parts[] = S.split(" и"); // Разбили строку S на отдельные слова, используя в качестве разделителя пробел и букву и, в результате parts[0] = "Пр", parts[1] = "вет,", parts[2] = "м", parts[3] = "р!"

Отправлено: 09:21, 07-08-2012

 

Аватара для Tonny_Bennet

Ветеран


Сообщения: 1384
Благодарности: 177

Профиль | Отправить PM | Цитировать


В вашем примере строка выглядит не как "Привет, мир" кириллицей, а "Hello, world". И если вы пытаетесь использовать в качестве второго разделителя пробел и кириллическую букву "и" у вас ничего не выйдет т.к. в исходных строках этого символа нет.

Замените "Hello" на "Привет" и "world" на "мир" тогда заработает.

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.


Отправлено: 09:26, 07-08-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Точно, глупая ошибка. Не заметил.
Спасибо.

Цитата:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at test.Test.main(Test.java:13)
Что это?

Отправлено: 09:27, 07-08-2012 | #3


Аватара для Tonny_Bennet

Ветеран


Сообщения: 1384
Благодарности: 177

Профиль | Отправить PM | Цитировать


Цитата d_tryuk@vk:
Что это? »
Для таких вещей существует поиск в Гугл. Вставляете ошибку нажимаете найти. На первой странице наверняка будет ответ.

Если переводить дословно будет ясно: исключение вызвано тем что индекс массива выходит за пределы.

Цитата d_tryuk@vk:
String parts[] = S.split(" "); »
Этой строкой вы создали массив, разделив строку при помощи пробелов. Получился массив, состоящий из 2-х элементов. Обычно массивы индексируются начиная с 0, т.е. у вас два элемента массива: первый с индексом 0 а второй с индексом 1.

Здесь же
Цитата d_tryuk@vk:
System.out.println(parts1[2]); »
Вы обращаетесь к элементу с индексом 2. А такого элемента в массиве нет - поэтому возникло исключение.

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.


Отправлено: 10:18, 07-08-2012 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата Tonny_Bennet:
String parts[] = S.split(" "); » »
Цитата Tonny_Bennet:
System.out.println(parts1[2]); » »
Тут же два разных массива. Обращаюсь я к тому где разделил строку с помощью пробела и буквы "и".

Отправлено: 11:33, 07-08-2012 | #5


Аватара для Tonny_Bennet

Ветеран


Сообщения: 1384
Благодарности: 177

Профиль | Отправить PM | Цитировать


Согласен недоглядел. Но ошибка есть другая. Делаем задание руками

Строка: Привет, мир
Делим строку при помощи пробела: {Привет,} {мир}
Делим строку при помощи " и": ничего не получаем т.к. в исходной строке не встречается сочетание пробела и буквы "и" соответственно результатом данного разделения служит null (скорее всего) и обращаться к элементу массива которого не существует нельзя.

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.


Отправлено: 13:03, 07-08-2012 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Tonny_Bennet:
Делим строку при помощи " и": ничего не получаем »
Точно? А не массив из одного элемента будет?

Отправлено: 13:19, 07-08-2012 | #7


Аватара для Tonny_Bennet

Ветеран


Сообщения: 1384
Благодарности: 177

Профиль | Отправить PM | Цитировать


Цитата Iska:
Точно? А не массив из одного элемента будет? »
Согласен, ошибся. А в мануал лезть было лень. http://javascript.ru/String/split

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.


Отправлено: 17:49, 07-08-2012 | #8


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата Tonny_Bennet:
http://javascript.ru/String/split »
А причём здесь мануал по JavaScript?

Последний раз редактировалось d_tryuk@vk, 07-08-2012 в 21:37.


Отправлено: 20:13, 07-08-2012 | #9


Аватара для Tonny_Bennet

Ветеран


Сообщения: 1384
Благодарности: 177

Профиль | Отправить PM | Цитировать


Цитата d_tryuk@vk:
А причём здесь мануал по JavaScript? »

Разницы в принципе нет. В Java метод Split ведёт себя абсолютно так же.

http://docs.oracle.com/javase/6/docs/api/

Цитата:
public String[] split(String regex,
int limit)

Splits this string around matches of the given regular expression.

The array returned by this method contains each substring of this string that is terminated by another substring that matches the given expression or is terminated by the end of the string. The substrings in the array are in the order in which they occur in this string. If the expression does not match any part of the input then the resulting array has just one element, namely this string.

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:45, 08-08-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Ошибочка

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено




 
Переход