Массивы в Java
В Java, чтобы объявить массив, надо в определении переменной написать квадратные скобки. Их можно разместить как перед именем переменной, так и после него. Однако первый способ предпочтительней, так как является java-стилем, второй способ – си-стиль. С правой части от знака присваивания создается объект соответствующего типа, при этом вместо круглых скобок пишутся квадратные, в которых указывается количество элементов массива. Примеры объявления переменных и создания массива вещественных чисел и строк:
double[] a = new double[10]; String[] b = new String[5];
Обращение к элементам массива происходит по их индексам, заключенным в квадратные скобки.
public class ArrayClass public static void main(String[] args) int[] a = new int[3]; a[0] = 15; a[1] = 12; a[2] = -3; for (int i = 0; i a.length; i++) System.out.println(a[i]); > for (int i : a) System.out.println(i); > int[][] b = new int[2][2]; b[0][0] = -1; b[0][1] = 1; b[1][0] = 1; b[1][1] = -1; for (int[] ints : b) for (int i : ints) System.out.println(i); > > > >
Если требуется сразу присвоить элементам массива значения, то значения перечисляются в фигурных скобках непосредственно после знака присваивания:
String[] s = "ab", "cd", "ef">;
В Java размер обычного массива изменять нельзя.
Существует статический класс Arrays, методы которого позволяют выполнять многие рядовые операции с массивами – сортировку, копирование, вывод на экран, сравнение и др.
import java.util.Arrays; import java.util.Random; public class ArraysTest { public static void main(String[] args) { Random random = new Random(); int[] a = new int[10]; for (int i = 0; i 10; i++) { a[i] = random.nextInt(100); } System.out.println(Arrays.toString(a)); Arrays.sort(a); System.out.println(Arrays.toString( Arrays.copyOf(a, 5))); } }
[ 22 , 19 , 58 , 36 , 45 , 70 , 10 , 36 , 91 , 30 ]
[ 10 , 19 , 22 , 30 , 36 ]
Метод sort() сортирует переданный в качестве аргумента массив. Метод copyOf() копирует указанное количество элементов массива. При этом создается новый массив.
Можно создавать массивы объектов собственного класса:
public class ArrayOfObjects public static void main(String[] args) Book[] shelf = new Book[3]; shelf[0] = new Book("Red"); shelf[1] = new Book("Green"); shelf[2] = new Book("Blue"); System.out.println(shelf[1].title); > > class Book String title; Book(String title) this.title = title; > >
X Скрыть Наверх
Программирование на Java. Курс
Java. Массивы строк. Одномерные и двумерные массивы строк. Инициализация массивов строк. Примеры решения задач
Массивы строк в Java. Одномерные и двумерные массивы строк. Инициализация массивов строк. Примеры решения задач
Поиск на других ресурсах:
1. Понятие массива строк. Общая форма объявления одномерного массива строк
Как и любой язык программирования, язык программирования Java может реализовывать массивы строк. Любая строка в Java имеет тип String . Одномерный массив строк имеет тип String[] . Двумерный массив строк имеет тип String[][] .
Общая форма объявления и выделение памяти для одномерного массива строк
String[] arrayName = new String[size];
- String – встроенный в Java класс, который реализует строку символов. Объект типа String поддерживает большой набор операций, которые можно просмотреть здесьи здесь ;
- arrayName – имя объекта (экземпляра) типа String . Фактически, arrayName есть ссылкой на объект типа String ;
- size – размер массива (количество строк, количество элементов типа String ).
Объявление одномерного массива строк и выделение памяти для него можно реализовать и по другому
String[] arrayName;
arrayName = new String[size];
2. Каким образом объявляется одномерный массив строк? Пример
Ниже приведен пример объявления и использования одномерного массива строк.
// объявление одномерного массива строк
String[] array = new String[5];
// заполнение начальными значениями
array[0] = "abcd";
array[1] = "Hello";
array[2] = ""; // пустая строка
array[3] = "bestprog";
array[4] = ";:\\+ color: #008000;">// комбинация "\\" заменяется на "\"
// использование в выражениях
arrayS[4] = arrayS[1] + " " + arrayS[3]; // arrayS[4] = "Hello bestprog"
arrayS[4] += ".net"; // arrayS[4] = "Hello bestprog.net"
Как видно из примера, работа с массивами строк в Java есть довольно удобной и не требует сложных дополнительных преобразований на их обработку.
3. Двумерный массив строк. Общая форма
Возможно, в некоторых задачах возникнет потребность в объявлении двумерного массива строк.
Общая форма объявления двумерного массива строк следующая:
String[][] matrName = new String[n][m];
- matrName – имя объекта (ссылка на объект), который есть двумерным массивом типа String ;
- n – количество строк в массиве matrName ;
- m – количество столбцов в массиве matrName .
Возможен также другой способ объявления и выделения памяти для двумерного массива строк:
String[][] matrName; // объявление ссылки на двумерный массив строк
matrName = new String[n][m];
4. Пример объявления и использования двумерного массива строк
Ниже приведен пример объявления и использования двумерного массива строк
// объявление двумерного массива строк
String[][] matr = new String[2][3];
// заполнение массива значениями
for (int i=0; ilength; i++)
for (int j=0; jlength; j++)
matrS[i][j] = "matrS[" + i + "][" + j + "]";
// проверка
String s;
s = matrS[0][0]; // s = "matrS[0][0]"
s = matrS[1][1]; // s = "matrS[1][1]"
5. Как определяется длина массива строк? Свойство length . Пример
Чтобы определить количество строк в массиве используется свойство length .
Для одномерных массивов количество строк n определяется следующим образом:
String[] arrayS = new String[25];
int n;
n = array.length;
Для двумерных массивов количество строк и столбцов определяется следующим образом
// matr - двумерный массив строк
String[][] matrS = new String[2][3];
int n, m;
n = matr.length; // n = 2 - количество строк
m = matr[0].length; // m = 3 - количество столбцов
m = matr[1].length; // m = 3
6. Как осуществляется инициализация одномерного массива? Пример
Инициализация одномерного массива строк точно такая же как инициализация одномерого массива любого другого типа.
// инициализация одномерного массива строк
String[] M = "Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
>;
String s;
s = M[2]; // s = "Tuesday"
s = M[4]; // s = "Thursday"
7. Поиск заданной строки в одномерном массиве строк. Пример
// поиск заданной строки в массиве строк
// объявление массива строк
String M[] = new String[5];
String s = "May"; // строка, которую нужно найти
boolean f_is;
// заполнение массива значениями
M[0] = "January";
M[1] = "February";
M[2] = "May";
M[3] = "October";
M[4] = "December";
// поиск строки
f_is = false;
for (int i=0; ilength; i++)
if (M[i]==s) f_is = true;
break;
>
// вывод результата
if (f_is)
System.out.println("Искомая строка есть в массиве.");
else
System.out.println("Искомой строки нет в массиве.");
8. Сортировка одномерного массива строк по алфавиту методом вставки. Пример
Для сравнения двух строк в лексикографическом порядке в классе String разработан метод compareTo() . Общая форма метода следующая:
int compareTo(вторая_строка)
- , если вторая строка следует после первой строки в лексикографическом порядке;
- =0 , если строки одинаковы;
- >0 , если вторая строка следует перед первой в лексикографическом порядке.
Фрагмент, который демонстрирует сортировку массива строк методом вставки:
// сортировка массива строк методом вставки
String[] M = "abc",
"bde",
"fgh",
"abcd",
"bcdef",
"cdef",
"fghij",
"aaa"
>;
String s;
// сортировка
for (int i=0; ilength-1; i++)
for (int j=i; j>=0; j--)
if (M[j].compareTo(M[j+1])>0) // обменять M[j] и M[j+1] местами
s = M[j];
M[j] = M[j+1];
M[j+1] = s;
>
// вывод результата
for (int i=0; ilength; i++)
System.out.println(M[i]);
В результате выполнения вышеприведенного кода, на экран будет выведено следующее
aaa
abc
abcd
bcdef
bde
cdef
fgh
fghij
9. Как осуществляется инициализация двумерного массива строк? Пример
Инициализация двумерного массива строк ничем не отличается от инициализации двумерного массива любого примитивного типа. Элементами массива есть обычные строки.
Ниже приведен пример инициализации двумерного массива строк с именем M
// объявление массива M с начальной инициализацией
String M[][] = new < "a1", "a2", "a3" >,
< "b1", "b2", "b3" >,
< "a1", "c2", "a1" >
>;
// проверка
String s;
s = M[0][1]; // s = "a2"
s = M[1][0]; // s = "b1"
10. Пример подсчета количества вхождений заданной строки в двумерном массиве строк
// вычисление количества вхождений заданной строки в двумерном массиве
// объявление массива M с начальной инициализацией
String M[][] = < "abcd", "abc", "bcd" >,
< "acd", "bcd", "abcd" >,
< "abc", "bc", "cde" >
>;
String s = "abc"; // строка, количество вхождений которой нужно вычислить
int k = 0; // количество вхождений, результат
for (int i=0; ilength; i++)
for (int j=0; jlength; j++)
if (M[i][j]==s)
k++;
// k = 2
11. Пример замены строки в двумерном массиве строк
- двумерный массив строк с именем matr ;
- строка s1 , которая ищется для замены;
- строка s2 , которая заменяет строку s1 .
Разработать программу, которая заменяет строку s1 в матрице matr новой строкой s2 . Фрагмент кода, который решает данную задачу:
// объявление двумерного массива строк
String[][] matr = new String[2][3];
// заполнение матрицы matr произвольными значениями
matrS[0][0] = "abc";
matrS[0][1] = "cba";
matrS[0][2] = "def";
matrS[1][0] = "abc";
matrS[1][1] = "fff";
matrS[1][2] = "qqq";
// заполнение значениями строк s1 и s2
String s1 = "abc"; // заменяемая строка
String s2 = "mmm"; // заменяющая строка
// цикл вычисления
for (int i=0; ilength; i++)
for (int j=0; jlength; j++)
if (matrS[i][j]==s1)
matr[i][j] = s2;
// вывод результата
for (int i=0; ilength; i++) for (int j=0; jlength; j++)
System.out.print(matrS[i][j] + " ");
System.out.println();
>
В результате выполнения вышеприведенного кода, на экран будет выведен следующий результат:
mmm cba def
mmm fff qqq
Связанные темы
- Класс String. Часть 1
- Класс String. Часть 2
Инициализировать массив строк в Java
В этом посте мы покажем, как объявить и инициализировать массив строк в Java.
1. Мы можем объявить и инициализировать массив строк в Java, используя новый оператор с инициализатором массива. Например, следующий фрагмент кода создает массив строк размером 5:
String [ ] arr = new String [ ] < "A" , "B" , "C" , "D" , "E" >;
2. Ниже приведен альтернативный синтаксис для объявления массива, аналогичный массивам в стиле C/C++, где [] появляется после имени переменной.
String [ ] arr = new String [ ] < "A" , "B" , "C" , "D" , "E" >;
3. Мы также можем разделить код на объявление и присваивание, как показано ниже.
String [ ] arr ; // объявление массива
arr = new String [ ] < "A" , "B" , "C" , "D" , "E" >; // инициализация массива
4. Мы также можем объявить и инициализировать массив строк в одной строке без использования оператора new, как показано ниже:
String [ ] arr = < "A" , "B" , "C" , "D" , "E" >;
5. Если мы не предоставим никакого инициализатора, каждому элементу массива будет присвоено значение по умолчанию null. Например,
String [ ] arr = new String [ 5 ] ;
System . out . println ( Arrays . toString ( arr ) ) ; // [null, null, null, null, null]
6. Мы можем использовать Arrays.fill() метод, чтобы присвоить указанное значение каждому элементу или элементам между указанным диапазоном указанного массива. Для иллюстрации рассмотрим следующий код:
String [ ] arr = new String [ 5 ] ;
// присваиваем значение `A` каждому элементу массива
Arrays . fill ( arr , «A» ) ;
// присваиваем значение `B` от индекса 1 включительно до индекса 3, исключая
Arrays . fill ( arr , 1 , 3 , «B» ) ;
System . out . println ( Arrays . toString ( arr ) ) ; // [A, B, B, A, A]
7. Мы также можем использовать Arrays.setAll() метод, представленный в Java 8, который можно использовать для установки всех элементов указанного массива с помощью указанной функции генератора. Например,
String [ ] arr = new String [ 5 ] ;
Arrays . setAll ( arr , i -> «A» ) ;
System . out . println ( Arrays . toString ( arr ) ) ; // [A, A, A, A, A]
8. Мы также можем создать пустой массив строк размера 0, как показано ниже:
String [ ] arr = new String [ 0 ] ;
System . out . println ( Arrays . toString ( arr ) ) ; // печатает []
String [ ] arr = < >;
System . out . println ( Arrays . toString ( arr ) ) ; // печатает []
9. Мы также можем создать массив строк, используя отражение. Следующий код создаст новый массив с указанным строковым типом длины 5 со значением по умолчанию null.
String [ ] arr = ( String [ ] ) Array . newInstance ( String . class , 5 ) ;
System . out . println ( Arrays . toString ( arr ) ) ; // [null, null, null, null, null]
10. Мы знаем, что длина массива фиксирована, и мы можем изменить ее после создания массива. Если нам нужна реализация массива с изменяемым размером, мы должны пойти на ArrayList автоматически увеличивается или уменьшается.
List
System . out . println ( ArrayList ) ; // [A, B, C, D, E]
Вот и все об инициализации массива Java String.
Оценить этот пост
Средний рейтинг 4.79 /5. Подсчет голосов: 24
Голосов пока нет! Будьте первым, кто оценит этот пост.
Сожалеем, что этот пост не оказался для вас полезным!
Расскажите, как мы можем улучшить этот пост?
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂
Подписывайся
0 Комментарии
Встроенные отзывы
Просмотреть все комментарии
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации
- Все проблемы
- Практика DSA
- 100 самых популярных задач
- 50 лучших классических задач
- Лучшие алгоритмы
- Компилятор С/С++
- Компилятор Java
- Компилятор Python
- Компилятор JavaScript
- компилятор PHP
- Компилятор C#
- Свяжитесь с нами
- Политика конфиденциальности
- условия обслуживания
- Подпишитесь на новые публикации
Techie Delight © 2023 Все права защищены.
Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно
Как заполнить массив строк Java? [дубликат]
Проблема в том, что nextInt() возвращает int, как и описано.
Только он не дочитывает строку после того, как закончился поиск числа.
А, вообще говоря, там еще есть конец строки. И получается, что когда Вы делаете
for(int i = 0; i
Вы на самом деле сначала дочитываете строку, в которой вводили int, а потом только начинаете добавлять элементы списка.
Будет наглядно, если попробуете указать, что у Вас будет один элемент. Попробуйте.
Можно, например, попробовать получить строку, а из нее уже получить int:
Int n = Integer.parseInt(sc.nextLine());
или «проталкивать» строку после получения int:
int n = sc.nextInt(); sc.nextLine();
P.S. а зачем Вы еще и массив фиксированной длины создаете, если дальше работаете со списком?