値 k のすべての整数をそれ自体の k 個のコピーに置き換える必要がある scaleByK というメソッドを作成しようとしています。たとえば、メソッドが呼び出される前のリストが [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;
}
}
}
メソッド開始時の length=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 にリセットされます。