본문 바로가기
Java (국비)/Java 문제

배열리스트 문제

by Hwanii_ 2023. 5. 20.
728x90

1. 중복을 제외한다는 조건이 없기 때문에
ArrayList 클래스를 사용해서 배열리스트를 만들기
2.스캐너를 사용해서 0을 입력받으면 종료되는 프로그램
3.정수만 들어가기 때문에 <Integer> 을 사용 해서 강제성을 부여하기.
4. 입력을 몇번할지 모르니까 while(true), 종료 조건은 0번 입력받았을 때
5. data.add(입력받은값) 해서 배열리스트에 값을 저장
6. 만약 프로그램이 종료되면 ?
종료되기전까지 입력한 정수들의 평균을 출력

평균 : 입력한 정수들의 총합 / 입력한 정수의 개수

그리고, 내가 입력한 정수 중에서 짝수가 몇개인지를 출력
만약 내가 입력한 정수를 2로 나눴을때 나머지가 0이야?
ok
그러면 그 ok된 짝수들의 개수를 출력
짝수는 __개 입니다.
그리고, 그 짝수가 뭔지를 출력.
[_, _, _]

 

이클립스에서 구현 하기

 

for(int i = 0;i < data.size();i++) {

sum += data.get(i);

}

을 for each문으로 나타내기.

 

설명
홀수는 제거되고, 짝수만 출력.

 

Console

주의할점 :

 

홀수를 삭제 할 때,

for(int i = 0;i < data.size();i++) {

          if(data.get(i) % 2 == 1) {

          data.remove(i);

          }

}

이렇게 하면 잘못된 코드 이다.

1. 0번째 부터 i 가 배열리스트 객체의 공간보다 작을때까지 루프.

2. 만약 i번째의 값을 2로 나눈거에 나머지가 1일때 (홀수이면)

해당 i번째의 값을 지워라.

 

근데, i번째 값을 지우면, i+1 번째 값이 i번째로 밀려온다.

 

1 2 3 4 5 6 7 8 9 10 이 있다고 가정하면,

 

1이 홀수라서 지워 졌다.

그러면,

2 3 4 5 6 7 8 9 10 이 되고,

2가 0번째 인덱스로 밀려온 상황인데,

for문은 i++이 되서 get(1)을 보게 된다.

get(1)에 해당하는건 숫자 3에 해당하니,

2를 체크하지 못하게 된다.

 

그래서,

int index = 0;

while(index < data.size()) {

      if(data.get(index) % 2 == 1) {

      data.remove(index);

      continue;

       }

      index++;

}

이런 코드를 짜야한다.

 

 

반응형

'Java (국비) > Java 문제' 카테고리의 다른 글

예외처리 문제  (0) 2023.05.20
배열리스트 문제 2  (0) 2023.05.20
상속 문제  (0) 2023.05.15
자판기 프로그램 제작 2  (0) 2023.05.12
자판기 프로그램 제작 1  (0) 2023.05.12