私の質問は、配列に要素を追加したいということです。
'createArray'メソッド
メソッド 'addElementsToArray'のおかげで配列の長さは3
です 'this.array [0]'の位置に新しい要素を追加します配列の残りの位置が使用され
ている場合、最初の位置を空にするために1ステップ右にシフトします新しい要素のために。
配列の長さが10または100に等しい場合はどうなりますか?
配列の長さに関係なく、使用するコード行を少なくする方法はありますか?
ありがとうございました
private int[] array;
public createArray(int m){
this.array = new int[m];
}
public void addElementsToArray(int element){
try {
for (int i=0; i<=this.getArray().length; i++) {
if (this.getArray()[i] == 0) {
this.getArray()[i] = element;
System.out.println("1");
break;
}else if(this.getArray()[i] != 0 && this.getArray()[i + 1] == 0) {
int vault = this.getArray()[i];
if (this.getArray()[i + 1] == 0) {
this.getArray()[i + 1] = vault;
this.getArray()[i] = element;
System.out.println("2");
break;
}
}else if(this.getArray()[i] != 0 && this.getArray()[i + 1] != 0) {
if (this.getArray()[i + 2] == 0) {
int vault = this.getArray()[i];
this.getArray()[i + 2] = this.getArray()[i + 1];
this.getArray()[i + 1] = vault;
this.getArray()[i] = element;
System.out.println("3");
break;
}
}
}
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("This Stack is Full");
}
System.out.println(Arrays.toString(this.getArray()));
}
アイデアは、最初の要素から最後の要素まで配列をループして、最初に出現する0を探すことです。見つからない場合は、配列がいっぱいです。その場合は、を使用System.arraycopy
してすべてを0から識別された位置1の右にシフトしてから、新しい要素を位置0に挿入します。
public void addElementsToArray(int element){
for(int i=0; i<array.length; i++)
{
if(array[i] == 0)
{
System.arraycopy(array, 0, array, 1, i);
array[0] = element;
return;
}
}
throw new IllegalStateException("Array is full");
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加