ArrayList 활용 예제

hailey·2021년 7월 29일
0

JAVA

목록 보기
2/5
post-thumbnail

🎈 5명의 사람 이름을 입력 받아서 ArrayList에 저장한 후에 이들 중 '김'씨 성을 가진 사람을 모두 출력하시오


// 5명의 사람 이름을 입력 받아서 ArrayList에 저장한 후에 이들 중 '김'씨 성을 가진 사람을 모두 출력하시오.
// + 김씨 성을 가진 사람이 몇 명인지 출력하시오.

import java.util.ArrayList;
import java.util.Scanner;

public class ArrayList_Ex {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in); // 스캐너 불러오기
        ArrayList<String> names = new ArrayList(); // ArrayList 생성
        int index = 0; // 몇 명인지 숫자 세기

        for(int i = 0 ; i <= 4 ; i++) { // 스캐너로 이름 5개 입력 받기
            System.out.println("이름을 입력해 주세요");
            names.add(sc.nextLine());
        }

        System.out.println("성이 '김'인 분의 이름을 모두 출력합니다.");

        for(int i = 0 ; i <= 4 ; i++) {
            String name = names.get(i); // 배열의 값(이름)을 변수에 저장
            if (name.startsWith("김")) { // 만약 "김"으로 시작한다면, 
                index++; // 인덱스는 +1
                System.out.printf("[%s]\t",names.get(i)); // 이름이 출력됨
            }
        }
        System.out.println();
        System.out.println("김씨 성을 가진 분은 모두 " + index + " 명 입니다.");
      	// 몇 명인지도 인덱스를 통해 출력됨
    }
}

🎈 5명의 별명을 입력 받아 ArrayList에 저장하고 이들 중 별명의 길이가 제일 긴 별명을 출력하시오.

  • 단, 각 별명의 길이는 모두 다르게 입력한다.
  • 별명의 길이가 같은 것을 입력할 수 있는 경우를 처리하시오.

import java.util.ArrayList;
import java.util.Scanner;

// 5명의 별명을 입력 받아 ArrayList에 저장하고 이들 중 별명의 길이가 제일 긴 별명을 출력하시오.
// (단, 각 별명의 길이는 모두 다르게 입력한다.)
// 위 문제에서 별명의 길이가 같은 것을 입력할 수 있는 경우를 처리하시오.

public class ArrayList_Ex02 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in); // 스캐너
        ArrayList<String > nicknames = new ArrayList(); // ArrayList 생성
        int[] lengthArr = new int[5]; // 별명 문자열 길이를 저장할 배열
        int max = lengthArr[0]; // 최대값을 저장할 인스턴스

        for (int i = 0 ; i <= 4 ; i++) { // 5개의 별명을 입력 받는다
            System.out.println("별명을 입력 해 주세요!");
            nicknames.add(sc.nextLine());
        }


        for (int i = 0 ; i <= 4 ; i++) {
          // ArrayList에 저장된 각 별명들의 길이를 lengthArr에 저장한다
            lengthArr[i] = nicknames.get(i).length();
            if (max < lengthArr[i]) { // 최대값을 찾아 max에 저장한다
                max = lengthArr[i];
            }
        }

        for (int i = 0 ; i <= 4 ; i++) { // i번째 배열의 길이가 max와 같다면 출력한다
            if (max == nicknames.get(i).length()) {
                System.out.println("가장 길이가 긴 별명은 > " + nicknames.get(i));
            }
        }
    }
}

예제 출처


느낀점

뭔가 더 for문을 적게 쓰고도 할 수 있는 방법이 있을 것 같은데 잘 모르겠다. ArrayList를 배워서 어딘가 써먹었다는 데에 의의를 둔다.
두 번째 문제에서 중복값을 처리할 수 있는 방안을 만들라고 했는데, 어차피 중복값이 나와도 가장 길이가 긴 별명이 복수일 경우, 모두 출력 되기 때문에 저 코드로 괜찮지 않나 싶었다. (아닌가?)
아, 여전히 for문으로 최대값, 최소값 구하기와 String 함수 종류가 헷갈리기 때문에 내일 다시 정리해 두어야 겠다고 생각했다!

profile
중간노력자

0개의 댓글