【发布时间】: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