有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在数组中打印数字

我正在尝试编写一个函数来显示锯齿数组中的所有组合,其中每个组合包含来自每个子数组的一个元素。交错数组可以由任意数量的数组组成,每个数组可以有任意数量的元素。例如,对于以下阵列: a[0]={1,3,5} a[1]={2,4} 它应返回: (1, 2) (1, 4) (3, 2) (3, 4) (5, 2) (5、4)

我本想这样做,但马上就遇到了麻烦。从逻辑上看,得到1、2和1、4似乎没问题,但下一次运行I被设置回0(很抱歉,现在无法在devel机器上进行测试)。 有谁能提出更好的解决方案吗

这是我的密码

for (int i = 0; i < array1.length(); i++)
    for (int j = 0; j < array2.length(); j++)

        if (j < array2.length())
            i = 0;
        else 
            i++;

        System.out.println(array1[i] "," array2[j])

共 (6) 个答案

  1. # 1 楼答案

    这个怎么样:

    int a[]={1,2,3}; int b[]={1,2}

    for (int i = 0; i < b.length; i++) {
        for (int j = 0; j < a.length; j++) {
            System.out.println(a[i]+","+a[j]);
    
        }
    
    }
    
  2. # 2 楼答案

    如果我正确地理解了你的问题(我可能不是),我想你所需要的只是

    for (int i = 0; i < array1.length(); i++){
      for (int j = 0; j < array2.length(); j++){
        System.out.println(array1[i] "," array2[j]);
      }
    }
    

    达到预期的效果

  3. # 3 楼答案

    你不需要这个:

    if (j < array2.length())
                i = 0;
            else 
                i++;
    

    i在for循环中自动递增

    这应该可以:

    for (int i = 0; i < array1.length(); i++)
        for (int j = 0; j < array2.length(); j++)
            System.out.println(array1[i] "," array2[j])
    
  4. # 4 楼答案

    循环中的if语句会破坏一切。您只需要2个嵌套循环即可完成任务:

    for (int i = 0; i < array1.length(); i++)
        for (int j = 0; j < array2.length(); j++) {
            System.out.println(array1[i] + "," + array2[j]);
        }
    }
    
  5. # 5 楼答案

    下面是一个适用于任意数量数组的通用解决方案(请注意此算法运行时的指数性质):

    int[][] arrays = new int[][]
    {
        {1, 2, 3, 4, 5, 6},
        {1, 2, 3, 4, 5, 6}, 
        {1, 2, 3, 4, 5, 6}
    }; // let's print all fair rolls of a 3d6
    
    if (arrays.length == 0) return; // this is why we can't have nice things
    
    int[] currentPos = new int[arrays.length];
    
    while(currentPos[arrays.length - 1] != arrays[arrays.length - 1].length)
    {
        // print the current value
        System.out.print(arrays[0][currentPos[0]]);
        for (int i = 1; i < arrays.length; ++i)
            System.out.print(", " + arrays[i][currentPos[i]]);
        System.out.println();
    
        // increment the "counter"
        ++currentPos[0];
        for (int i = 1; i < arrays.length; ++i)
        {
            if (currentPos[i - 1] == arrays[i - 1].length)
            {
                currentPos[i - 1] = 0;
                ++currentPos[i];
            }
            else break;
        }
    }
    
  6. # 6 楼答案

    for (int i = 0; i < array1.length(); i++)
        for (int j = 0; j < array2.length(); j++)
            System.out.println("(" + array1[i] + "," array2[j] + ")");