나는 0에서 1 사이의 1,000,000 개의 난수를 생성하고 가장 큰 수를 찾아서 인쇄하는 프로그램을 찾으려고합니다.ArrayList Java에서 무작위로 가장 큰 double을 찾는데 오류가 발생했습니다. Java
제너레이터를 사용하여 생성 된 각 Double을 ArrayList에 삽입 할 수 있었지만 목록에서 가장 큰 숫자를 찾는 방법을 찾지 못했습니다. 현재의 코드는 "java.lang.IndexOutOfBoundsException"오류를 발생시킵니다.
이것은 아마도 내가 ArrayList를 처음 사용하고 명령에 유창하지 못하고 작동하는 방식 때문일 수 있습니다.하지만 실제로 작동하지 않는 방법에 대해 도움을 주시면 감사하겠습니다. 동안.
import java.util.ArrayList;
import java.util.Random;
public class milran {
public static void main(String[] args) {
Random r = new Random();
ArrayList<Double> myList = new ArrayList<Double>();
for (int i = 1; i<=1000000; i++){
double randomValue = 0.0+(1.0-0.0)*r.nextDouble();
myList.add(randomValue);
}
double max = myList.get(1);
for (int z=2; z<=myList.size(); z++){
double test = myList.get(z);
if (test>max){
max = test;
}
}
System.out.println(max);
}
}
왜 가장 큰 요소를 찾으려면 목록을 한 번만 스캔하는 대신 정렬하는 것이 좋습니다? –
@PatriciaShanahan - 재사용을 목적으로합니다. 정렬되지 않은 배열은 시간이 지남에 따라 속도가 느려지는 경향이 있습니다. 2 번째로 큰 요소가 필요할 때 어떻게됩니까? 그럼 셋째? 배열 스캔 계속? 그게 O (n^2). Collections.sort (List list) –
wfunston
^^ O (nlogn)와 O (n) – wfunston