교수님은 정렬 된 int 배열을 만들고이 문자열을 문자열이있는 정렬 된 배열 목록으로 변환하기를 원합니다. 이것은 유지 보수에 관한 과제이며 원래 코드를 반영해야합니다. 그래서, 나는 크기 메소드, Collections.sort(), 또는 원래 코드를 반영하지 않는 것을 사용할 수 없다.정렬 된 int 배열을 정렬 된 배열 목록으로 변환하는 데 문제가 있습니다.
은 우리가
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++;
}
}
를 부여 이것은 내가 배열 목록
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));
에 예외를 던지는 유지로 변환하기 위해 함께 온 것입니다 디버깅 ArrayList.class는 인덱스가 크기와 같기 때문에 예외가 발생하는 것을 볼 수 있습니다. 나는 해결책을 생각해 낼 수 없다. 어떤 도움이라도 대단히 감사하겠습니다. 문제에 대한
짧은 대답 :'add' 메서드를 사용하여 목록의 크기를 늘려야합니다. 아직 삽입하지 않은 요소들에 대해서'set'을 호출하는 것만으로는 그것을 할 수 없습니다. –
@David Wallace가 말했듯이, set이 이것을 허용했다하더라도, 당신의 라인 list.set (i, list.get (0)); a [i] = a [i - 1]과 같지 않다면 a [i] = a [0]와 같은 일을합니다. 그래서 두 가지 버그가 있습니다. 나는 또한 당신이 어떤 list = new ArrayList를 잘못 해석하고 있다고 생각하고있다. (10); 이 경우에는 10 개의 문자열 목록을 만들지 않고 10 번째 숫자를 "힌트"로 사용하여 초기 용량 (크기가 아님)을 1 –
@ben으로 설정합니다. "힌트"가 아닙니다. 실제 크기입니다. [javadoc] (https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#ArrayList-int-)에 따라 : *** 지정된 초기 값으로 빈 목록을 구성합니다. 용량 *** – Bohemian