[英]Converting the elements of an array of interger into a single integer in Java
我想將整數數組的元素轉換為單個整數。 請注意,我還沒有在課堂上學習join或number方法,因此它們不能用於此程序。
例如,{1、2、3}將變為123。
這是我對過程的想法:
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.