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

时间:2015-12-27 06:51:39

标签: java arrays

例如:

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 个答案:

答案 0 :(得分:0)

您没有考虑偶数块中其他数组的偶数元素,反之亦然。

我建议你采取更好的方法。

遍历两个数组,从每个数组中适当添加并放入它。

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));

答案 1 :(得分:0)

你的问题是在你的for循环中,你的k增量超出了数组容量,甚至在代码退出后也是如此,因此奇数循环不起作用。您需要将k变量重置为1。

我建议你将两个循环合并为:

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

答案 2 :(得分:0)

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

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]);
        }
    }
}

答案 3 :(得分:0)

@AfterlifeAssassin在完成偶数块后添加K = 1,它将正常工作。与当前代码一样,偶数块完成后k将为6,一旦进入奇数块,它将把第一个值放在c [7],这是不正确的。

答案 4 :(得分:0)

    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]);
    }}}

答案 5 :(得分:0)

这里有朋友!!

完整的运行程序逻辑差别不大

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]);
    }
}