繁体   English   中英

如何在循环中将数组元素从一个复制到另一个?

[英]How can i copy array elements from one to another in loop?

我是 Java 的新手,但我已经研究了 C 一段时间,并且有一个非常愚蠢的问题,我无法自己回答。 我想将一个数组中的元素(数字 10 之后的元素)复制到另一个数组(它将包含第一个数组中10之后的数字)我大致知道如何制作它,但我找不到我的具体答案案子。 也许我的代码不正确,我应该重写它,但我想坚持下去。 我知道该练习必须有很多答案,但我试图避免查看它们(因为我想开始自己解决它们)并创建自己的解决方案。

我的代码不会从第一个数组中复制每个元素(位置),而是将最后一个元素复制到第二个数组中的所有位置。

我希望我把我的问题说清楚了,我的代码是可读的。 谢谢大家。 和平与爱!

所以,代码来了

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int n; // Size of the first array
        int flag=0;

        System.out.println("Enter array size ");
        n=in.nextInt();

        int [] arr;
        arr=new int[n];
        
        System.out.println("Enter elements ");
        for(int i=0;i<n;i++){
            arr[i]=in.nextInt();
        }
        System.out.println("Your array is "+Arrays.toString(arr));

        for(int i=0;i<n;i++){

            if(arr[i]==10)
                break;
                 flag = arr[i]; // HERE I AM LOCATING 10'S POSITION
        }

        int size=n-flag; // This is a funny part, i am "calculating"  for the second array's size) 

        int[] new_arr;
        new_arr= new int[size];


        for(int i=flag;i<n;i++){ // I think here must be the problem! 
          for(int j=0;j<size;j++){
              new_arr[j]=arr[i];
          }

        }
        System.out.println("Lets try "+Arrays.toString(new_arr));


    }
}`

你可以只使用System.arraycopy(source_arr, sourcePos, dest_arr, destPos, len); 它来自 java.lang.System 的方法

那么首先,position 10 是 position 10 ,不需要在 position 10 找到值...

也不需要 2 个循环,我们只需从 10 开始迭代所有元素并复制它们。

所以我们只是做

int start_pos=10;
int size=n-start_pos;
int[] new_arr = new int[size];

for(int i=start_pos;i<n;i++){ 
      new_arr[i-start_pos]=arr[i];
  }
}

是的,就像其他人所说的那样,更一般地说,您会使用 System.arraycopy() 甚至更好地使用列表并调用 subList 方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM