Преобразование элементов массива interger в одно целое число в Java - PullRequest
0 голосов
/ 12 марта 2019

Я хотел бы преобразовать элементы массива целых чисел в одно целое число.Обратите внимание, что я еще не изучил методы объединения или числа в классе, поэтому их нельзя использовать для этой программы.

Например, {1, 2, 3} станет 123.

Вот моя мысль о процессе:

  1. Преобразование первого элемента массива в строку
  2. Объединение оставшихся элементов
  3. Использование Integer.parseInt() для преобразования строкиназад к целому числу

Кто-нибудь может подтвердить, что я делаю это правильно, или предложить альтернативный способ?

Кроме того, из любопытства, как мы можем сравнить элементы двух целочисленных массивовбез использования класса Arrays?

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Может ли кто-нибудь подтвердить, что я делаю это правильно

Если вы введете правильное значение, ваш метод будет правильным делать то, что вы хотите. @Mykhailo Moskura дает метод, использующий Java 8 Stream API для объединения строк.

предложить альтернативный способ?

если вы входите во входной массив в определенном диапазоне (0,9), а первый элемент не должен быть 0, вы можете попробовать этот код: int [] input = {1, 2, 3};

    int factor = 0;
    int result = 0;
    for (int i = 0; i < inputs.length; i++) {
        result = inputs[i] + factor * 10;
        factor = result;
    }

    System.out.println(result);

вывод: 123

сравнить два массива, не использовать массивы

Предположим, не используется какой-либо инструмент, вы можете использовать две карты для сравнения двух массивов:

public static boolean compareArray(int[] arr1, int[] arr2) {
        if (arr1.length != arr2.length) {
            return false;
        }

        Map<Integer, Integer> map1 = new HashMap<>();
        Map<Integer, Integer> map2 = new HashMap<>();
        for (int arr : arr1) {
            Integer times = map1.getOrDefault(arr, 0);
            map1.put(arr, times + 1);
        }
        for (int arr : arr2) {
            Integer times = map2.getOrDefault(arr, 0);
            map2.put(arr, times + 1);
        }

        for (Integer key : map1.keySet()) {
            if (!map1.get(key).equals(map2.get(key))) {
                return false;
            }
        }
        return true;
    }
0 голосов
/ 12 марта 2019

Вот как это можно сделать с помощью Java 8:

 final int[] array = new int[]{1,2,3};
   final String result = IntStream
                    .of(array)
                    .boxed()
                    .map(String::valueOf)
                    .collect(Collectors.joining());
   final int intResult = Integer.parseInt(result);

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

 public int arrayOfIntsAsSingleInt ( final int[] array){
            if (Objects.isNull(array) || array.length == 0) {
                throw new IllegalArgumentsException("array could not be null or empty")
            } else if (array.length == 1) {
                return array[0];
            }
            return convertArraysofIntAsSingleInt(array);
        }

Мы можем сравнить два целых числа, написав собственный Comparator или

вызывает метод Integer.compareTo (anotherInteger)

...