私の教授は、ソートされたint配列を作成し、それを文字列を含むソート済み配列リストに変換するコードを与えました。これはメンテナンスに関する割り当てであり、元のコードを反映する必要があります。したがって、私は、サイズメソッド、Collections.sort()、または元のコードを反映しないものは使用できません。配列int配列を配列配列リストに変換する際の問題
我々はこれは私が配列リストに変換すると
stringList() {
list = new ArrayList<String>(10);
}
public void insert(String element) {
if(c == 0) {
list.add(0, element);
c++;
} else {
int j = 0;
for (int i = 0; i < c; i++, j++) {
if(element.compareTo(list.get(i)) == -1)
break;
}
for (int i = c; i > j; i--) {
list.set(i, list.get(0));
}
list.set(j, element);
c++;
}
}
を出ていることが
list.set(i, list.get(0));
た場合に例外をスローし続けるものです
OrderedIntList() {
a = new int[10];
}
public void insert(int v) {
if(c == 0) {
a[0]= v;
c++;
} else {
int j = 0;
for (int i = 0; i < c; i++, j++) {
if(v < a[i])
break;
}
for (int i = c; i > j; i--) {
a[i] = a[i - 1];
}
a[j]= v;
c++;
}
}
を与えられていますデバッグ私は、ArrayList.classは、インデックスがサイズと等しいため、例外がスローされていることがわかります。私は解決策を考え出すことができない。どんな助けでも大歓迎です。あなたの問題へ
短い答え:リストのサイズを増やすには、 'add'メソッドを使う必要があります。まだ挿入していない要素に対して 'set'を呼び出すだけではできません。 –
@David Wallaceは、setがこれを許可したとしても、あなたの行list.set(i、list.get(0)); a [i] = a [i - 1]と同じではない、a [i] = a [0]のようなことをしている。だから、2つのバグがあります。 また、私はちょうどあなたが何を間違って解釈していると推測しています=新しいArrayList(10);この場合、10文字列のリストを作成しません。最初の容量(サイズではありません)を1 –
に設定するためのヒントとして番号10を使用します。これはヒントではありません。それは実際のサイズです。 [javadoc](https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#ArrayList-int-)に従って:***指定された初期値を持つ空のリストを作成します容量*** – Bohemian