在java中反转数组并将其分配给新数组
我只想反转当前现有数组的顺序,并将该反转顺序分配给新数组,同时保持原始数组的完整性(而不是反转) 我试图使我的新阵列(b)发生相反的情况。但是,当我在反向算法之后打印原始数组时,它会以新的反向顺序打印。我想让这个数组保持原样 这是我的代码,其中我有两个数组:n和b,其中n是我的原始数组,b是我的反向数组在java中反转数组并将其分配给新数组,java,arrays,Java,Arrays,我只想反转当前现有数组的顺序,并将该反转顺序分配给新数组,同时保持原始数组的完整性(而不是反转) 我试图使我的新阵列(b)发生相反的情况。但是,当我在反向算法之后打印原始数组时,它会以新的反向顺序打印。我想让这个数组保持原样 这是我的代码,其中我有两个数组:n和b,其中n是我的原始数组,b是我的反向数组 public void setUpArray(){ user = input.next(); char [] n = user.toCharArray(); char
public void setUpArray(){
user = input.next();
char [] n = user.toCharArray();
char [] b = n;
boolean ok;
System.out.println(Arrays.toString(n));
for(int i = 0; i < n.length / 2; i++) // reverses the array
{
b[i] = n[i];
char temp = b[i];
b[i] = b[b.length - i - 1];
b[b.length - i - 1] = temp;
}
System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(n)); //this prints in reverse for some reason
public void setUpArray(){
user=input.next();
char[]n=user.toCharArray();
char[]b=n;
布尔ok;
System.out.println(Arrays.toString(n));
for(int i=0;i
当前,如果我在扫描仪中输入“hi”,这就是我的输出
[h, i] <-- original array (n)
[i, h] <-- reversed array (b)
[i, h] <-- orignal array (n) prints in reverse, why???
[h,i]当您进行此分配时
char [] b = n;
这意味着n
和b
变量只引用了一个数组对象。创建一个新数组以使原始数组保持不变:
char [] b = new char[n.length];
如果这样做,用于反转数组的代码也应该更改。您应该从n
而不是b
获取输入值。您根本不需要temp
变量
for(int i = 0; i <= n.length / 2; i++) // reverses the array
{
b[i] = n[b.length - i - 1];
b[b.length - i - 1] = n[i];
}
for(int i=0;我想这就是问题所在。但是,当我这样做时,我的反转算法不起作用。它只反转第0个索引并停止。你知道为什么吗?@NicholasRoberts在你当前的实现中,你应该在开始反转之前将整个输入数组复制到输出数组(否则b[b.length-i-1]
未初始化`当您将其与b[i]
交换时),但更好的解决方案是按相反的顺序复制。通过将输入数组复制到输出数组中,您的意思是像我最初那样将它们分配给彼此吗?对不起,我有点困惑,如果您能详细说明,我将不胜感激。@NicholasRoberts查看编辑。您不必复制未反转的输入数组,只需复制元素即可n到b的顺序相反。@NicholasRoberts在这种情况下,只需在循环中添加一次迭代-for(int i=0;i