数组元素比较Java

时间:2016-07-14 18:44:50

标签: java arrays multidimensional-array comparison

作为初学者,我正在做在线问题以理解阵列,这不是功课而是练习。任何建议都有帮助!

代码应采用用户输入

问题:

打印两个以空格分隔的整数,表示A和B获得的各自比较分数。

  • 示例输入

5 6 7 3 6 10

  • 样本输出

1 1

解释

在这个例子中: A =(a0,a1,a2)其中值为(5,6,7)

B =(b0,b1,b2)其中值为(3,6,10)

比较每个人的得分:

a0> b0 ==>所以A获得1分。

a0 = b0 ==>没有人得到一分。

b0> a0 ==>所以B得到1分。

A的比较得分为1,B的比较得分为1.因此,我们在一行上打印1 1。

方法1:

首先我将它作为一个二维数组来实现,但我只能做到这一点,因为我不确定在哪里实现比较:

public class CompareElem2DArray{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int array2d [][]= new int[3][3];
        System.out.println("Please enter 3 marks for A and 3 marks for B: ");

        for(int a = 0; a<3; a++) //row
        {
            for(int b=0; b<3; b++)//column
            {
                int array2d[a][b] = in.nextInt();
            }

        }

        for (int column = 0; column<3; column++)
        {
            for(int row=0; row<3; row++)
            {
                System.out.println( array2d[column][row]+" ");
            }
        }

        System.out.println();

    }
}

方法2:

这是我第二次尝试不使用2D数组。

public class Comparison {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a0 = in.nextInt();
        int a1 = in.nextInt();
        int a2 = in.nextInt();
        int b0 = in.nextInt();
        int b1 = in.nextInt();
        int b2 = in.nextInt();

        int a[] = new int[3];
        int b[] = new int[3];
        int firstAns = 0;
        int secondAns = 0;

        for(int i = 0; i<3; i++)
        {
            int a[i] = in.nextInt();
            System.out.println(a[i]);
        }
        for(int j = 0; j<3; j++)
            {
            int b[j] = in.nextInt();
            System.out.println(b[j]);
        }
        for(int z = 0; z<3; z++)
            {
                if(a[z]>b[z])
                    {
                    firstAns++;
                }
            else if(a[z]<b[z])
                {
                secondAns++;
            }
            else
                {
                return;
            }
        }
     System.out.println(firstAns);
      System.out.println(secondAns);           
}
}

2 个答案:

答案 0 :(得分:0)

在方法1中,我认为您需要的是[3] [2]或[2] [3]数组(您有2组数据,在一组中有3个数字)。 然后比较进入第二个循环(在这种情况下,array2d是[3] [2]):

    for(int i=0; i<3; i++)
    {
      //comparison goes here
    }

您需要将array2d [i] [0]的值与array2d [i] [1]进行比较。

输入时为:5 6 7 3 6 10

您的2D阵列类似于:

5 6 7

3 6 10

所以第二个循环是将5与3,6与6和7与10进行比较。

答案 1 :(得分:0)

您可以尝试

    int[] ar = {5,6,7,3,6,10};
    int halflen= (ar.length)/2;
    int[] result = new int[halflen];

    for(int i=0,j=halflen;i<halflen;i++,j++)
    {
        result[i]=ar[i]-ar[j];
    }

现在你有一个包含3个结果的数组,如果0是绘制的,那么&gt;如果你想要的话,0可以消除内部循环中的数组,并添加你的内容:

         If (ar [i] > ar [j]) A++;
         If (ar [i]<ar [j]) B++;