Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Топ:
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
2022-10-27 | 27 |
5.00
из
|
Заказать работу |
|
|
Задача. Дан двумерный массив целых чисел, состоящий из n*m элементов. Все строки массива, которые упорядочены по возрастанию, заменить нулями.
import java.util.*;
class Ex_6_8{
//метод инициализации массива
static void fill(int [][] a){
for(int i=0;i<a.length;i++)
for(int j=0;j<a[i].length;j++)
if (i%3==0) a[i][j]=j;
else a[i][j]=(int)(Math.random()*10)-5;
}
//метод вывода массива на печать
static void print(int[][] a){
for(int i=0;i<a.length;i++)
System.out.println(Arrays.toString(a[i]));
}
//логический метод определяет отсортирован ли массив
static boolean is_sort(int[] t){
int[] t1=new int[t.length];
System.arraycopy(t,0,t1,0,t.length);
Arrays.sort(t1);
return (Arrays.equals(t,t1));
}
public static void main(String[] args) {
int n=5, m=5;
int[][] arr=new int[n][m];
fill(arr);
System.out.println("Исходная матрица");
print(arr);
for(int i=0;i<arr.length;i++){
if (is_sort(arr[i])) Arrays.fill(arr[i],0);
}
System.out.println("Новая матрица");
print(arr); }}
Результат:
Исходная матрица
[0, 1, 2, 3, 4]
[-5, -1, -4, 0, 0]
[4, -1, -3, -5, 0]
[0, 1, 2, 3, 4]
[-3, -5, 4, 2, 3]
Новая матрица
[0, 0, 0, 0, 0]
[-5, -1, -4, 0, 0]
[4, -1, -3, -5, 0]
[0, 0, 0, 0, 0]
[-3, -5, 4, 2, 3]
Пример. Сложить два массива и копирование массива
Есть два массива, и вам нужно их соединить и получить общий массив.
private double[] concatArray(double[] a, double[] b) { if (a == null) return b; if (b == null) return a; double[] r = new double[a.length + b.length]; System.arraycopy(a, 0, r, 0, a.length);// System.arraycopy(b, 0, r, a.length, b.length); return r;}Где System.arraycopy(a, 0, r, 0, a.length); метод- копирует a.length элементов массива а начиная с нулевого, и размещает их в массиве r, начиная с нулевого.System.arraycopy(b, 0, r, a.length, b.length); копирует b.length элементов массива b, начиная с нулевого, и размещает их в массиве r, начиная с a.length.Пример сложения двух строковых массивов:
// метод для склеивания двух строковых массивовprivate String[] concatArray(String[] a, String[] b) { if (a == null) return b; if (b == null) return a; String[] r = new String[a.length + b.length]; System.arraycopy(a, 0, r, 0, a.length); System.arraycopy(b, 0, r, a.length, b.length); return r;} String[] week1 = new String[] { "Понедельник", "Вторник", "Среда" }; String[] week2 = new String[] { "Четверг", "Котопятница", "Субкота", "Воскресенье" }; String[] week = concatArray(week1, week2); // будет возвращён массив всех семи дней неделиКопировать часть массива
|
Аналогично, если вам нужно взять только часть из большого массива, то воспользуйтесь методом:
System.arraycopy(a, start, r, 0, a.length - start);Где start - с какой позиции нужно получить новый массив, отсчёт с 0private double[] copyPartArray(double[] a, int start) { if (a == null) return null; if (start > a.length) return null; double[] r = new double[a.length - start]; System.arraycopy(a, start, r, 0, a.length - start); return r;} public void onClick(View v) { double[] digits = new double[] {6.5, 3.1, 5.72}; double[] part = copyPartArray(digits, 1); Toast.makeText(v.getContext(), part[1] + "", Toast.LENGTH_LONG).show();}Здесь вы также можете использовать другие типы вместо double. Вот пример использования:
private String[] copyPartArray(String[] a, int start) { if (a == null) return null; if (start > a.length) return null; String[] r = new String[a.length - start]; System.arraycopy(a, start, r, 0, a.length - start); return r;} public void onClick(View v) { String[] weekday = new String[] { "Понедельник", "Вторник", "Среда" }; // нам нужен массив со второго элемента String[] week = copyPartArray(weekday, 1); // вернёт Вторник и Среда // выводим второй элемент из полученного массива, т.е. Среда Toast.makeText(v.getContext(), week[1], Toast.LENGTH_LONG).show();}Перемешать элементы массива
Бывает необходимость перемешать элементы массива в случайном порядке. В интернете нашёл готовый метод по алгоритму Fisher–Yates (прим.: Fisher - это рыбак, который ловит рыбу, например, кот)
// Implementing Fisher–Yates shufflestatic void shuffleArray(int[] ar) { Random rnd = new Random(); for (int i = ar.length - 1; i > 0; i--) { int index = rnd.nextInt(i + 1); // Simple swap int a = ar[index]; ar[index] = ar[i]; ar[i] = a; }} // создадим массив и перемешаем егоint[] mSolutionArray = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };shuffleArray(mSolutionArray); Log.i("Array", Arrays.toString(mSolutionArray));Подводим итоги
1. Помните, что размер массива фиксируется и не может меняться на протяжении его жизненного цикла.
2. Если вам нужно изменять, то используйте ArrayList, который способен автоматически выделять дополнительное пространство, выделяя новый блок памяти и перемещая в него ссылки из старого.
|
|
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!