Ограничение записи массива в массив

114
14 ноября 2021, 02:10

Пришлось немного подхимичить код чтобы при загрузке на сайт универа не одинаков был.. В общем где тут дописать чтобы при двух массивах с одним полем возвращалось не пустое значение, а значения этих двух полей?

                    public static char[] e(char[] q, char[] n){ 
                         int  perem = 0,
                         int lennn = q.length + n.length;
                    char[] ressu = new char[lennn];
                    for (int i = 0; i < lennn-2; i++) {
                        if (q.length > i) {
                            ressu[perem++] = q[i];
                        }
                        if (n.length > i) {
                            ressu[perem++] = n[i];
                        }
                    }
                    return ressu;
    }
Answer 1

Вам же тут дали хороший ответ, а Вы его обкорнали.

  1. Для цикла for необходимо ограничиваться не длиной массива t (почему именно t?! а что если t будет меньше массива e?!), а выбрать максимальную длину: Math.max(t.length, e.length).
  2. При добавлении элементов в новый массив проверять границы: if (t.length > i) res[per++] = t[i]; if (e.length > i) res[per++] = e[i];

UPD:

public static char[] f(char[] a1, char[] a2) {
    int len1 = a1 != null ? a1.length : 0;
    int len2 = a2 != null ? a2.length : 0;
    char[] res = new char[len1 + len2];
    for (int i = 0, p = 0, l = len1 > len2 ? len1 : len2; i < l; i++) {
        if (len1 > i) {
            res[p++] = a1[i];
        }
        if (len2 > i) {
            res[p++] = a2[i];
        }
    }
    return res;
}

Вывод:

char[] a1 = {'1', '3', '5', '7', '0'},
       a2 = {'4', '7', '9'};
System.out.println(f(a1, a2)); // 14375970
Answer 2

Условие продолжения цикла в for - i < lennn-2 очевидно неправильное. Надо:

  for (int i = 0; i < q.length || i < n.length; i++) {

Демонстрационный пример на JavaScript:

function merge(q, n) { 
  var ressu = []; 
  ressu.length = q.length + n.length; 
  var perem = 0; 
  for (var i = 0; i < q.length || i < n.length; i++) { 
    if (q.length > i) { 
      ressu[perem++] = q[i]; 
    } 
    if (n.length > i) { 
      ressu[perem++] = n[i]; 
    } 
  } 
  return ressu; 
} 
 
console.log(JSON.stringify(merge([1], [2]))); 
console.log(JSON.stringify(merge([1,2,3], [10,20,30,40,50])));

READ ALSO
Можно ли как-то поместить иконки в jar, чтобы было проще его передать на другой компьютер?

Можно ли как-то поместить иконки в jar, чтобы было проще его передать на другой компьютер?

У меня Maven-проектЯ положила иконки в папку src\main\resources, прописала такие же пути к ним, но созданный jar-архив их не видит

85
Как включить CORS или OPTIONS метод в AWS Lambda Function Handler без API Gateway в коде?

Как включить CORS или OPTIONS метод в AWS Lambda Function Handler без API Gateway в коде?

У меня есть метод lambda на JAVAКогда я посылаю запрос методом OPTIONS, я поучаю {"message":"Missing Authentication Token"}

104
переделать в stream

переделать в stream

как переписать этот цикл в stream?

174