簡體   English   中英

在Java中將整數數組的元素轉換為單個整數

[英]Converting the elements of an array of interger into a single integer in Java

我想將整數數組的元素轉換為單個整數。 請注意,我還沒有在課堂上學習join或number方法,因此它們不能用於此程序。

例如,{1、2、3}將變為123。

這是我對過程的想法:

  1. 將數組的第一個元素轉換為字符串
  2. 連接其余元素
  3. 使用Integer.parseInt()將String轉換回整數

任何人都可以確認我在以正確的方式這樣做還是建議其他方式?

此外,出於好奇,我們如何不使用類Arrays來比較兩個整數數組的元素?

這是使用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);
        }

我們可以通過編寫自定義比較器來比較兩個整數

調用Integer.compareTo(anotherInteger)方法

任何人都可以確認我的做法正確嗎

如果輸入有效,則您的方法正確無誤。 @Mykhailo Moskura提供了一種使用Java 8 Stream API連接字符串的方法。

提出另一種方法?

如果您的輸入數組中的元素在某個范圍(0,9)之內,並且第一個元素不能為0,則可以嘗試以下代碼:int [] inputs = {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

比較兩個數組不使用數組

假設不使用任何工具,則可以使用兩個map來比較兩個數組:

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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM