【问题标题】:How do I convert an Int to an Int[] in java?如何在 java 中将 Int 转换为 Int[]?
【发布时间】:2021-01-27 04:29:56
【问题描述】:

我想转换一个原始的 Java 整数值:

int myInt = 4821;

到一个整数数组:

int[] myInt = {4, 8, 2, 1};

【问题讨论】:

  • 提示:%10 提取最后一个数字,/10 删除最后一个数字。还要考虑如果数字为负数会发生什么。

标签: java arrays type-conversion integer converters


【解决方案1】:

使用 Java 8+StreammapToInt简单单行解决方案的以下代码:

Stream.of(String.valueOf(myInt).split("")).mapToInt(Integer::parseInt).toArray();

通用解决方案:

import java.util.stream.Stream;

public static int[] convertValueToIntegerArray(int value) {
    return Stream.of(String.valueOf(value).split(""))
                 .mapToInt(Integer::parseInt)
                 .toArray();
}

例子:

import java.util.Arrays;

public void testIntegerArray() {
    int myInt = 4821;
    int[] myIntArr = convertValueToIntegerArray(myInt);
    System.out.println("Converted: " + Arrays.toString(myIntArr));
}

【讨论】:

    【解决方案2】:
    public static void main(String[] args) {
        int myInt = 4821;
        int size = 0;
        int temp = myInt;
        while(temp > 0) {
            temp = temp/10;
            size++;
        }
        int[] numbers = new int[size];
        
        int index = 0;
        while(myInt > 0) {
            numbers[index] = myInt % 10;
            myInt = myInt / 10;
            index++;
        }
        for (int i : numbers) {
            System.out.println("Number : "+i);
        }
    }
    

    输出

    Number : 1
    Number : 2
    Number : 8
    Number : 4
    

    【讨论】:

    • @Bathsheba 在划分之前你将如何声明和数组?因为 OP 听起来很新,所以我不想使用使用数组列表或集合的概念
    • 你需要对数字进行两次解析:一次计算长度,第二次提取数字。
    • 不,不需要使用字符串。你还没有处理初学者的负面因素。计算数字中的位数是一个简单的“除以 2 的幂”问题。
    • 当你有字符串时比便宜的是 (char - 48)
    • 这对我来说已经足够了。 DV 转换为 UV。无论如何,“以二的幂除”可能是矫枉过正。
    【解决方案3】:

    有很多方法可以做到这一点。一个简洁的方法是使用Stream API,如下所示:

    import java.util.Arrays;
    
    public class Main {
        public static void main(String[] args) {
            int myInt = 4821;
            int[] arr = 
                String.valueOf(Math.abs(myInt)) // Convert the absolute value to String
                .chars()                        // Get IntStream out of the String
                .map(c -> c - 48)               // Convert each char into numeric value
                .toArray();                     // Convert the stream into array
    
            // Display the array
            System.out.println(Arrays.toString(arr));
        }
    }
    

    输出:

    [4, 8, 2, 1]
    

    注意事项:

    1. ASCII value of'0'48'1'49等等。
    2. Math#abs 返回 int 值的绝对值
      • 例如Math.abs(-5) = 5Math.abs(5) = 5

    【讨论】:

      【解决方案4】:
      int myInt = 4821;
      String myIntText = myInt+ ""; //Implicit cast to String
          
      Integer[] numberArray = new Integer[myIntText.length()]; //Create Array for result
      for(int i=0; i<myIntText.length(); i++) {
          String number = myIntText.substring(i, i+1);  //Extract every number from left to right
          numberArray[i] = Integer.valueOf(number); //save the number in the array
      }
      for(int i = 0; i<myIntText.length(); i++) 
          System.out.println(numberArray[i]);
      

      【讨论】:

      • 如果您打算这样做,请使用charAt 而不是substring
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 2014-05-22
      • 1970-01-01
      • 2011-07-31
      • 2010-10-27
      • 2010-11-21
      相关资源
      最近更新 更多