[英]Mirroring an array
我正在尝试镜像一个数组。 换句话说,如果我创建一个看起来像这样的数组(用户指定大小):
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();
}
}
}
你们对我的问题在哪里有任何想法吗? 我尝试调试,但是找不到问题。 抱歉,谢谢,我是初学者。
您正在执行不必要的循环。
尝试更改此:
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(检测中间),就可以做您想做的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.