【问题标题】:How can i copy array elements from one to another in loop?如何在循环中将数组元素从一个复制到另一个?
【发布时间】:2020-07-21 16:10:09
【问题描述】:

我是 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));


    }
}`

【问题讨论】:

  • 您需要存储索引i,而不是值arr[i]。此外,您可以使用System.arraycopy,它是单行且速度更快。此外,您的循环不正确:您只需要一个循环,即外部循环,new_arr[i - flag] = arr[i]

标签: java arrays loops for-loop


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    首先,第10位就是第10位,不用再找第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 方法。

    【讨论】:

      猜你喜欢
      • 2014-07-26
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      相关资源
      最近更新 更多