有 Java 编程相关的问题?

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

java根据奇偶位置将数字从2个数组放到单个数组中

例如:

a=[1,2,3,4]
b=[5,6,7,8] 

所以它应该打印出来

c=[1,5,2,6,3,7,4,8]

我不知道出了什么问题 我想我在我假设的循环中出错了

    import java.io.*;
    class wert
    {
    public static void main(String[]ert)throws IOException
    {
    InputStreamReader ni=new InputStreamReader(System.in);
    BufferedReader in=new BufferedReader(ni);
    int k=0,i;
    int y[]=new int[3];
    int u[]=new int[3];
    int c[]=new int[6];
    for(i=0;i<3;i++)
    {
    y[i]=Integer.parseInt(in.readLine());
    }
    for(i=0;i<3;i++)
    {
    u[i]=Integer.parseInt(in.readLine());
    }
    for(i=0;i<3;i++)//even block
    {
    if(k%2==0)
    {
    c[k++]=y[i];
    }
    k++;
    }
    for(i=0;i<3;i++)//odd block
    {
    if(k%2!=0)
    {
    c[k++]=u[i];
    }
    k++;
    }
    for(i=0;i<6;i++)
    {
    System.out.println(c[i]);
    }}}

共 (6) 个答案

  1. # 1 楼答案

    你没有考虑偶数块中另一个数组的偶数元素,反之亦然

    我建议你采取更好的方法

    在两个数组中循环,从每个数组中适当地添加并放置它

    Scanner sc = new Scanner(System.in);
    int a[] = new int[4];
    int b[] = new int[4];
    
    int c[] = new int[8];
    
    for(int i = 0; i < a.length; ++i)
      a[i] = sc.nextInt();
    for(int i = 0; i < b.length; ++i)
      b[i] = sc.nextInt();
    
    for(int i = 0, k = 0; i < a.length; i ++)
    {
       c[k++] = a[i];//take from the 1st array
       c[k++] = b[i];//take from the 2nd array
    }
    System.out.println(Arrays.toString(c));
    
  2. # 2 楼答案

        import java.io.*;
        class wert
        {
        public static void main(String[]ert)throws IOException
        {
        InputStreamReader ni=new InputStreamReader(System.in);
        BufferedReader in=new BufferedReader(ni);
        int k=0,i;
        int y[]=new int[3];
        int u[]=new int[3];
        int c[]=new int[6];
        for(i=0;i<3;i++)
        {
        y[i]=Integer.parseInt(in.readLine());
        }
        for(i=0;i<3;i++)
        {
        u[i]=Integer.parseInt(in.readLine());
        }
        for(i=0;i<3;i++)
        {
        if(k%2==0)
        {
        c[k++]=y[i];
        }
        k++;
        }
        k=1;//resetting the k
        for(i=0;i<3;i++)
        {
        if(k%2!=0)
        {
        c[k++]=u[i];
        }
        k++;
        }
        for(i=0;i<6;i++)
        {
        System.out.println(c[i]);
        }}}
    
  3. # 3 楼答案

    朋友们

    完整的运行程序逻辑没有什么不同

    class nc
    {
        public static void main(String args[])
        {
            int a[]={1,2,3,4};      //array 1
            int b[]={5,6,7,8};       //array 2
            int c[]=new int[10];   //new Array
    
    
            int EVEN=0;
            int ODD=1;
    
            boolean dishq,bishq;
            int uban=1;
            int tban=1;
    
                    dishq=true;
                    bishq=true;
    
            for(int i=0;i<8;i++)
            {
    
                if(i%2==0)
                {
                    if(dishq)
                    {       
                        c[i]=a[0];
                        dishq=false;
                    }
                    else
                    {
                        c[i]=a[uban];
    
                        uban=uban+1;
    
                    }
    
                }
    
                if(i%2==1)
                {
    
                    if(bishq)
                    {
                            c[i]=b[0];
                            bishq=false;
                    }
                    else
                    {
                        c[i]=b[tban];
                        tban=tban+1;    
                    }
                }
            }
            for(int i=0;i<c.length-2;i++)
            System.out.println(c[i]);
        }
    }
    
  4. # 4 楼答案

    您可以在单循环中添加新阵列,如下所示:

    import java.io.*;
    class wert
    {
        public static void main(String[]ert)throws IOException
        {
            InputStreamReader ni=new InputStreamReader(System.in);
            BufferedReader in=new BufferedReader(ni);
            int k=0,i;
            int y[]=new int[3];
            int u[]=new int[3];
            int c[]=new int[6];
            for(i=0;
            i<3;
            i++)
            {
                y[i]=Integer.parseInt(in.readLine());
            }
            for(i=0;i<3;i++)
            {
                u[i]=Integer.parseInt(in.readLine());
            }
            for(i=0;i<3;i++)
            {
                c[k++]=y[i];
                c[k++]=u[i];
            }
            for(i=0;i<6;i++)
            {
                System.out.println(c[i]);
            }
        }
    }
    
  5. # 5 楼答案

    @AfterLife刺客只需在完成偶数格挡后添加K=1,即可正常工作。正如在当前代码中一样,在完成偶数块后,k将是6,一旦进入奇数块,它将把第一个值放在c[7],这是不正确的

  6. # 6 楼答案

    问题是在偶数for循环中,k的增量超过了数组容量,并且在代码退出后将是偶数,因此奇数循环无法工作。您需要将k变量重置为1

    我建议您将两个循环合并为一个,如下所示:

    for(i=0;i<y.length;i++) {
        c[k++]=y[i];
        c[k++]=u[i];
    }