Java 如何将整数数组动态拆分为n个整数数组?

Java 如何将整数数组动态拆分为n个整数数组?,java,arrays,Java,Arrays,这里我有一个整数数组,它包含81值,所以我需要存储每个数组的9值,我需要得到9个数组。例如:array1从1到9和array2从10到18和array3从19到27诸如此类。有谁能帮我得到这个值吗 public class demo { public static void main(String[] args) { int num = 81; int numArray = num / 9; int[] input = new int[num];

这里我有一个整数数组,它包含
81
值,所以我需要存储每个数组的
9
值,我需要得到9个数组。例如:
array1
1到9
array2
10到18
array3
19到27
诸如此类。有谁能帮我得到这个值吗

public class demo {
   public static void main(String[] args) {
       int num = 81;
       int numArray = num / 9;
        int[] input = new int[num];
        for (int i = 0; i < num; i++) {
            input[i] = i + 1;
        }
        for (int j = 0; j < input.length; j++) {
            System.out.println(input[j]);
        }
    }
}
公共类演示{
公共静态void main(字符串[]args){
int num=81;
int numArray=num/9;
int[]输入=新的int[num];
for(int i=0;i
如何获得期望的结果?

您可以使用:

我刚刚注意到您需要9个部分,您可以轻松地将其放入循环中,并使用
arraycopy

publicstaticvoidmain(String[]args){
public static void main(String[] args) {
    int num = 85;
    int limit = 5;
    int index = 0;
    int extra = 0;
    int finalArrayIndex = 0;
    int[] innerArray = null;
    int[] input = new int[num];
    boolean isEnd = false;

    if (num % limit > 0) {
        extra = 1;
    }

    int[][] finalArray = new int[(num / limit) + extra][limit];

    for (int i = 0; i < input.length; i = i + (limit)) {

        innerArray = new int[limit];
        for (int j = 0; j < limit; j++) {

            innerArray[j] = input[index++];
            if (index >= input.length) {
                isEnd = true;
                break;
            }
        }

        finalArray[finalArrayIndex++] = innerArray;

        if (isEnd) {
            break;
        }
    }

    // just for test
    for (int k = 0; k < finalArray.length; k++) {
        for (int l = 0; l < finalArray[k].length; l++) {
            System.out.println("finalArray[" + k + "]" + "[" + l + "] : "
                    + finalArray[k][l]);
        }
    }
}
int num=85; 整数极限=5; int指数=0; int extra=0; int finalArrayIndex=0; int[]innerArray=null; int[]输入=新的int[num]; 布尔isEnd=false; 如果(数量百分比限制>0){ 额外=1; } int[]finalArray=新int[(数量/限制)+额外][限制]; 对于(int i=0;i=input.length){ isEnd=真; 打破 } } finalArray[finalArrayIndex++]=innerArray; 如果(i结束){ 打破 } } //只是为了测试 对于(int k=0;k
这是动态解决方案,您可以更改
num
limit
变量的值。我希望这将对您有所帮助:)
Java小提琴链接:

我的建议是使用

您可以按照以下步骤操作

  • 将所有81个值存储在
    列表中(
    ArrayList
  • 然后使用
    subList()
  • 您可以将
    列表
    转换为
    数组

    List<Integer> fullList=new ArrayList<>();        
    List<Integer> list1=fullList.subList(0,8); // first 9 elements
    Integer[] bar = list1.toArray(new Integer[list1.size()]);
    
    List fullList=new ArrayList();
    List list1=fullList.subList(0,8);//前9项要素
    整数[]条=list1.toArray(新整数[list1.size()]);
    

  • 你想展示什么??您甚至没有使用Numaray,所以为什么要创建它,您的问题不是很清楚使用System.arraycopy或Arrays类的某个方法。@Mohit_Bhasi,我需要创建9个数组,每个数组包含9个值。@khanam感谢您的澄清,肯定会给出答案:)Maroun,是否可以根据给定的输入动态创建数组,例如:num=81,这样我就可以创建9个数组。是的,使用循环。想想数组的
    ArrayList
    之类的东西。Maroun,你能指导我吗。Ruchira Gayan Ranawe,不使用任何内置函数,这是不可能的吗?@khanam不。你不需要使用内置方法。你可以写一段代码来做这件事。我建议这样做,因为这样做不太容易。@你能帮我得到我想要的输出吗。@khanam你能不能把你想做的事情和你迄今为止尝试过的事情都写出来?你可以通过skype或电子邮件联系我,因为你还不能在stackOverFlow中使用聊天。Ruchira Gayan Ranawera,检查此链接
    List<Integer> fullList=new ArrayList<>();        
    List<Integer> list1=fullList.subList(0,8); // first 9 elements
    Integer[] bar = list1.toArray(new Integer[list1.size()]);