我正在尝试创建一个名为 scaleByK 的方法,该方法应将值 k 的每个整数替换为自身的 k 个副本。例如,如果在调用方法之前列表是:[2, 4, -2, 5, 3, 0, 7],则应该是[2, 2, 4, 4, 4, 4, 5, 5, 5, 5, 5, 3, 3, 3, 7, 7, 7, 7, 7, 7, 7] 方法执行后。请注意,该方法应从列表中删除所有 0 和负值。
这就是我到目前为止所拥有的
public void scaleByK(){
for(int i=0;i<length;i++){
if(list[i]<0||list[i]==0){
for(int j=i+1;j<length;j++){
list[j-1]=list[j];
}
length-=1;
}
else{
for(int k=i;k<list[k]-1+i;k++){
for(int x=length-1; x>k;x--){
list[x+list[k]-1]=list[x];
}
for(int g=k+1; g<list[k+i];g++){
list[g]=list[k];
}
}
i=list[i]-1+i;
length+=list[i]-1;
}
}
}
方法开始时长度=7
当我运行该方法时,这就是我得到的 2 2 4 -2 -2 5 3 0 0 7
原始列表是 2 4 -2 5 3 0 7
这是我的打印方法
public void print() {
for (int i = 0; i < length; i++)
System.out.print(list[i] + " ");
System.out.println();
}
每次我运行程序时,长度都会重置回 7。