Как перейти к 0 индекс массива, если он будет превышен в Java? - PullRequest
0 голосов
/ 23 сентября 2018

Допустим, у меня есть массив целых чисел в диапазоне 65-90.Я случайным образом выберу один из элементов и добавлю к нему 10.Возможно ли это значение, если пересечение 90 вернется к 65?Например - я беру 85 и добавляю к нему 10.Так что должно быть 95, но я хочу 70.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Вы можете сделать это, поместив свое значение в интервал [0, high - low], удалив low к своему значению, затем добавьте к нему нужное число, возьмите по модулю сумму и, наконец, добавьте low обратно квернуться в диапазон [low, high]

public static void main(String[] args) {
    int low = 65, high = 90;
    System.out.println(addWithinInterval(85, 10, low, high));
}

private static int addWithinInterval(int value, int add, int low, int high) {
    return (value - low + add) % (high - low + 1) + low;
}
0 голосов
/ 23 сентября 2018

Я случайным образом выберу один из элементов и добавлю к нему 10.Возможно ли это значение, если кросс-диапазон 90 вернется к 65?

Конечно, оператор остатка сделает это за вас:

n = (n - 65) % (90 - 65) + 65;

Пример ( livecopy ):

int n = 85;
for (int x = 0; x < 10; ++x) {
    n += 10;
    n = (n - 65) % (90 - 65) + 65;
    System.out.println(n);
}

Или здесь на сайте: Java и JavaScript отличаются, но их операторы % работают одинаково, поэтому:

let n = 85;
for (let x = 0; x < 10; ++x) {
  n += 10;
  n = (n - 65) % (90 - 65) + 65;
  console.log(n);
}
...