Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中反转数组并将其分配给新数组_Java_Arrays - Fatal编程技术网

在java中反转数组并将其分配给新数组

在java中反转数组并将其分配给新数组,java,arrays,Java,Arrays,我只想反转当前现有数组的顺序,并将该反转顺序分配给新数组,同时保持原始数组的完整性(而不是反转) 我试图使我的新阵列(b)发生相反的情况。但是,当我在反向算法之后打印原始数组时,它会以新的反向顺序打印。我想让这个数组保持原样 这是我的代码,其中我有两个数组:n和b,其中n是我的原始数组,b是我的反向数组 public void setUpArray(){ user = input.next(); char [] n = user.toCharArray(); char

我只想反转当前现有数组的顺序,并将该反转顺序分配给新数组,同时保持原始数组的完整性(而不是反转)

我试图使我的新阵列(b)发生相反的情况。但是,当我在反向算法之后打印原始数组时,它会以新的反向顺序打印。我想让这个数组保持原样

这是我的代码,其中我有两个数组:n和b,其中n是我的原始数组,b是我的反向数组

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