我正在尝试镜像一个数组。换句话说,如果我创建一个看起来像这样的数组(用户给出大小):
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();
}
}
}
你们对我的问题在哪里有任何想法吗?我试图调试,但我找不到问题。抱歉,谢谢你,我是初学者。
答案 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(检测中间),你可以做你想要的。