Как заполнить все элементы объявленной переменной значением 1. В Java

public int[] board1 = new int [20];

Это определенная переменная. Также влияет ли значение 1 на этот код?

for (int i=-1;i<2;i++)
        board1[i]=1;

Разве вам не нужно будет перебирать весь массив? Итак, i = 0 и i < arraylength.

SedJ601 20.03.2024 00:23
Arrays.fill(board1, 1) - не знаю, что вы пытаетесь сделать с for-loop, но я уверен, что он сломается.
MadProgrammer 20.03.2024 00:24

Я не понимаю вопроса. Но for (int i=-1;i<2;i++) board1[i]=1; обязательно поставит ArrayIndexOutOfBoundsException.

Old Dog Programmer 20.03.2024 00:30

Кажется, у вас есть некоторые неправильные представления о массивах. Как вы придумали цикл for? Вы можете прочитать docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.htm‌​l

tgdavies 20.03.2024 00:31

«Влияет ли значение 1 на этот код?» Что вы имеете в виду?

tgdavies 20.03.2024 00:32

Я опубликовал задание, которое дал мне учитель, если это поможет.

ToMadToCode 20.03.2024 20:51

Итак, вам дали цикл for с заведомо неправильными границами, и вам нужно найти правильные?

tgdavies 20.03.2024 21:50

Изображения текста не очень хорошо воспринимаются здесь. Пожалуйста, отредактируйте вопрос еще раз, заменив изображение реальным текстом. Используйте копирование и вставку для обеспечения точности. И укажите, какие это строки 22 и 25.

Old Dog Programmer 20.03.2024 23:15
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
8
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, вы запутались в границах массива. Я не знаю, есть ли у вас опыт работы с другими языками (например, C), где это невозможно, но в Java размер массива хранится как член, поэтому для перебора элементов массива мы можем сделать это так:

int[] foo; //foo is just an array. this works for arrays of any type
           // but i've just written 'int' because that's what you're using
for (int i = 0; i < foo.length; i++) {
    foo[i] = 1; //we can set the value of the array at all points
}

... и это будет работать для всех массивов, потому что все они начинаются с 0 и заканчиваются .length - 1

Существует также синтаксис for-each, но его нельзя использовать для изменения массива (если только массив не принадлежит к классу, у которого есть методы для изменения его внутреннего состояния).

for (int x: foo) {
    System.out.println(x); //this will print each element of 'foo' in order,
                           //but the variable within this loop, x, is a shallow copy of that element of foo,
                           // so we cannot mutate it
}

наконец, как уже упоминали другие, есть Arrays.fill(). Это делает то же самое, что и цикл, но аккуратно упаковывает его в один вызов метода. Используете вы это или нет, зависит от стиля и вкуса (у меня были работы, где они не хотели, чтобы мы это использовали, но лично я предпочитаю это).

Если вам нужно установить массив быстрее и вы хотите, чтобы JVM и компилятор использовали для этого специальные инструкции ЦП, возможно, это можно сделать, но в большинстве случаев лучше использовать одну из трех показанных мной форм. .

Большинство сред Java основаны на OpenJDK, а не на GNU Classpath. Но смотреть исходный код в любом случае бессмысленно, как объясняется здесь. Короче говоря, просто используйте Arrays.fill(…). В худшем случае он делает то же самое, что и цикл, но все же проще и может быть даже быстрее. Я не знаю, каким должно быть третье решение, когда вы говорите «используйте одну из трех форм, которые я показал». В вашем ответе есть только два варианта сделать то, о чем просил вопрос.

Holger 20.03.2024 15:37

Другие вопросы по теме

Объединение отсортированных массивов определенной длины в Python (рекомендуемые практики)
Как установить патч np.savez_compressed, чтобы добавить уровень сжатия, не редактируя исходные файлы numpy?
Функция VBA работает внутри подпроцедуры, но не на листе Excel: ошибка «значения». Вероятно, проблема с одним аргументом, являющимся массивом
Подсчитайте количество вхождений каждых 26 символов для каждого слова в numpy
Сравнение элементов массива с использованием игрового автомата «равенства» (Java)
Ассоциативный массив Dlang из массива строк, ключом которого является строка, имеет неожиданное поведение
Инициализировать std::array определенного типа, но любого размера?
Как отсортировать по наименьшему значению из нескольких полей?
Как мне преобразовать объект[*,*] непосредственно в строку[*,*] в C#?
Создать новый массив, используя значения из другого массива