镜像数组

时间:2016-02-08 03:47:39

标签: java arrays string loops for-loop

我正在尝试镜像一个数组。换句话说,如果我创建一个看起来像这样的数组(用户给出大小):

0 2 4 6 7
8 9 10 11 12

镜像后,它应如下所示:

 0 2 4 2 0
 8 9 10 9 8

然而,当我制作一个3 x 5或更大的阵列时,它不起作用。它重复相同的数字:

0 2 4 2 2
8 9 10 8 8

到目前为止,这是我的代码:

import java.util.Scanner;
 public class Mirror {
public static void main (String [] args)
{

    Scanner kb = new Scanner (System.in);
    System.out.println("Please enter number of rows: ");
    int rows = kb.nextInt();

    System.out.println("Please enter number of columns:");
    int columns = kb.nextInt();

    int [][] mirror = new int [rows][columns];

    int sum =0;

    for (int r = 0; r<mirror.length; r++)
    {
        for (int c = 0; c<mirror[r].length ; c++)
        {
            mirror[r][c]= sum;

            sum= sum+2;
        }
    }

    for (int r = 0; r<mirror.length; r++)
    {
        for (int c = 0; c<mirror[r].length ; c++)
        {
        System.out.print (mirror[r][c]+ " ");
        }
        System.out.println();

    }

    int add = 0;
    for (int r = 0; r<mirror.length; r++)
    {
        for (int c = mirror[r].length/2 +1; c<mirror[r].length ; c++)
        {
            for (int x= 0; x<mirror[r].length/2; x=x++)
            {
                mirror[r][c] = mirror [r][x];

            }

        }
    }

    System.out.println();

    for (int r = 0; r<mirror.length; r++)
    {
        for (int c = 0; c<mirror[r].length ; c++)
        {
        System.out.print (mirror[r][c]+ " ");
        }
        System.out.println();

    }
}

  }

你们对我的问题在哪里有任何想法吗?我试图调试,但我找不到问题。抱歉,谢谢你,我是初学者。

1 个答案:

答案 0 :(得分:0)

你正在做更多的循环而不是必要的。

尝试更改此内容:

for (int r = 0; r<mirror.length; r++)
{
    /*for (int c = mirror[r].length/2 +1; c<mirror[r].length ; c++)
    {
        for (int x= 0; x<mirror[r].length/2; x=x++)
        {
            mirror[r][c] = mirror [r][mirror[r].length/2 +1 -c];

        }

    }*/

    for(int c=0; c<mirror[r].length; c++){
        if(c<mirror[r].length/2.0)
            mirror[r][mirror[r].length-1-c] = mirror[r][c];
    }
}

你只需要一个循环用于行,在这个循环中使用if(检测中间),你可以做你想要的。