- -
Ошибочка
(
http://forum.oszone.net/showthread.php?t=240114)
d_tryuk@vk |
07-08-2012 09:21 1965983 |
Ошибочка
Здравствуйте, не подскажите где ошибка?
Код:
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] = "р!"
|
|
Tonny_Bennet |
07-08-2012 09:26 1965989 |
В вашем примере строка выглядит не как "Привет, мир" кириллицей, а "Hello, world". И если вы пытаетесь использовать в качестве второго разделителя пробел и кириллическую букву "и" у вас ничего не выйдет т.к. в исходных строках этого символа нет.
Замените "Hello" на "Привет" и "world" на "мир" тогда заработает.
|
d_tryuk@vk |
07-08-2012 09:27 1965991 |
Точно, глупая ошибка. Не заметил. :)
Спасибо.
Цитата:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at test.Test.main(Test.java:13)
|
Что это?
|
Tonny_Bennet |
07-08-2012 10:18 1966033 |
Для таких вещей существует поиск в Гугл. Вставляете ошибку нажимаете найти. На первой странице наверняка будет ответ.
Если переводить дословно будет ясно: исключение вызвано тем что индекс массива выходит за пределы.
Цитата:
Цитата d_tryuk@vk
String parts[] = S.split(" "); »
|
Этой строкой вы создали массив, разделив строку при помощи пробелов. Получился массив, состоящий из 2-х элементов. Обычно массивы индексируются начиная с 0, т.е. у вас два элемента массива: первый с индексом 0 а второй с индексом 1.
Здесь же
Цитата:
Цитата d_tryuk@vk
System.out.println(parts1[2]); »
|
Вы обращаетесь к элементу с индексом 2. А такого элемента в массиве нет - поэтому возникло исключение.
|
d_tryuk@vk |
07-08-2012 11:33 1966101 |
Цитата:
Цитата Tonny_Bennet
String parts[] = S.split(" "); » »
|
Цитата:
Цитата Tonny_Bennet
System.out.println(parts1[2]); » »
|
Тут же два разных массива. Обращаюсь я к тому где разделил строку с помощью пробела и буквы "и".
|
Tonny_Bennet |
07-08-2012 13:03 1966160 |
Согласен недоглядел. Но ошибка есть другая. Делаем задание руками
Строка: Привет, мир
Делим строку при помощи пробела: {Привет,} {мир}
Делим строку при помощи " и": ничего не получаем т.к. в исходной строке не встречается сочетание пробела и буквы "и" соответственно результатом данного разделения служит null (скорее всего) и обращаться к элементу массива которого не существует нельзя.
|
Цитата:
Цитата Tonny_Bennet
Делим строку при помощи " и": ничего не получаем »
|
Точно? А не массив из одного элемента будет?
|
Tonny_Bennet |
07-08-2012 17:49 1966335 |
|
d_tryuk@vk |
07-08-2012 20:13 1966412 |
Цитата:
Цитата Tonny_Bennet
http://javascript.ru/String/split »
|
А причём здесь мануал по JavaScript? :)
|
Tonny_Bennet |
08-08-2012 09:45 1966667 |
Цитата:
Цитата 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.
|
|
Время: 19:30.
© OSzone.net 2001-