사용자 입력을 목록에 추가하고 역순으로 표시하려고합니다. 사용자가 내 코드의 여기에 0을 입력 할 때까지 요소가 추가됩니다목록에 입력 추가
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class InputInArrrayList{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int a = s.nextInt();
List<Integer> myList = new ArrayList<>();
while(a > 0) {
myList.add(a);
if (a == 0){
break;
}
}
Collections.reverse(myList);
System.out.println(myList);
}
}
는하지만 대신 0을 때 루프가 중단되지 않습니다, 그것은 OutOfMemoryError가 발생합니다 : 자바 힙 공간. 내가 도대체 뭘 잘못하고있는 겁니까?
하나의 입력 (루프 이전) 만 읽는 중입니다. – Eran
그리고 0보다 큰 경우 무한 루프가됩니다 – bmarkham
마음 속으로 코드를 실행하십시오. 예 : 사용자가 '5'를 입력합니다. '5> 0'이므로 while 루프를 시작합니다. 목록에'5 '를 추가합니다. '5! = 0'이므로 잠시 쉬지 않습니다. 루프 상태를 다시 확인하고 '5'는 여전히 '0'보다 큽니다. 목록에 다시 추가됩니다. 휴식 없음. 또 다른 루프 사이클. 문제가 보이니? :) 덕분에 – Oneiros