전체 방문자
오늘
어제
21종
종이의 코딩 공부방
21종
  • 분류 전체보기 (171)
    • JAVA (64)
    • Springboot (46)
      • 블로그만들기 (45)
    • Database (60)
      • Oracle (60)
    • 프로젝트 3 (CELOVER) (0)
    • 개발서버 구축 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
21종

종이의 코딩 공부방

JAVA

[자바/JAVA] 프로그래밍 - 배열(Array) 실습 예제

2023. 6. 5. 17:42

배열(Array) 예제 

 

문제 01.

길이가 10인 배열을 선언하고 1부터 10까지의 값을 반복문을 이용하여 순서대로 배열 인덱스에 넣은 후 그 값을 출력하세요.

ex.
1 2 3 4 5 6 7 8 9 10
public void practice1() {
    int[] arr = new int[10];

    for(int i = 0; i < arr.length; i++) {
        arr[i] = i + 1;
    }
    for(int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + " ");
    }
}

문제 02.

길이가 10인 배열을 선언하고 1부터 10까지의 값을 반복문을 이용하여 역순으로 배열 인덱스에 넣은 후 그 값을 출력하세요.

ex.
10 9 8 7 6 5 4 3 2 1
public void practice2() {
    int[] arr = new int[10];

    int num = arr.length;

    for(int i = 0; i < arr.length; i++) {
        arr[i] = num;
        num --;
        }

    for(int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + " ") ;
    }
}

문제 03.

사용자에게 입력 받은 양의 정수만큼 배열 크기를 할당하고 1부터 입력 받은 값까지 배열에 초기화한 후 출력하세요.

ex.
양의 정수 : 5
1 2 3 4 5
public void practice3() {
    Scanner sc = new Scanner(System.in);
    System.out.print("양의 정수 : ");
    int num = sc.nextInt();
    int[] arr = new int[num];

    for(int i = 0; i < arr.length; i++) {
        arr[i] = i+1;
    }
    for(int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + " ");
    }
    sc.close();
}

문제 04.

길이가 5인 String배열을 선언하고 “사과”, “귤“, “포도“, “복숭아”, “참외“로 초기화 한 후 배열 인덱스를 활용해서 귤을 출력하세요.

ex.
귤
public void practice4() {
    String[] arr = {"사과","귤","포도","복숭아","참외"};
    System.out.print(arr[1]);

}

문제 05.

문자열을 입력 받아 문자 하나하나를 배열에 넣고 검색할 문자가 문자열에 몇 개 들어가 있는지 개수와 몇 번째 인덱스에 위치하는지 인덱스를 출력하세요.

ex.
문자열 : application
문자 : i
application에 i가 존재하는 위치(인덱스) : 4 8
i 개수 : 2
public void practice5() {	
    Scanner sc = new Scanner(System.in);

    System.out.print("문자열 : ");
    String str = sc.nextLine();

    System.out.print("문자 : ");
    char ch = sc.nextLine().charAt(0);

    char[] arr = new char[str.length()];

    for(int i = 0; i < arr.length; i++) {
        arr[i] = str.charAt(i);
    }

    int count = 0;
    System.out.print("application에 i가 존재하는 위치(인덱스) : ");
    for(int i = 0; i < arr.length; i++) {
        if(arr[i] == ch) {
            System.out.print(i +" ");	
            count++;
        }
    }
    System.out.println();
    System.out.println("i 개수 : " + count);
    sc.close();
}

문제 06.

“월“ ~ “일”까지 초기화된 문자열 배열을 만들고 0부터 6까지 숫자를 입력 받아 입력한 숫자와 같은 인덱스에 있는 요일을 출력하고 범위에 없는 숫자를 입력 시 “잘못 입력하셨습니다“를 출력하세요.

ex.
0 ~ 6 사이 숫자 입력 : 4
금요일

0 ~ 6 사이 숫자 입력 : 7 
잘못 입력하셨습니다.
public void practice6() {
    char[] week = {'월','화','수','목','금','토','일'};	// char형 배열은 ""가 아닌 '' 써야된다. 

    Scanner sc = new Scanner(System.in);

    System.out.print("0 ~ 6 사이 숫자 입력 : ");
    int num = sc.nextInt();

    if(num >= 0 && num < 7) {
        System.out.print(week[num]);
    }else {
        System.out.println("잘못 입력하셨습니다.");
    }
    sc.close();
    }

문제 07.

사용자가 배열의 길이를 직접 입력하여 그 값만큼 정수형 배열을 선언 및 할당하고 배열의 크기만큼 사용자가 직접 값을 입력하여 각각의 인덱스에 값을 초기화 하세요. 그리고 배열 전체 값을 나열하고 각 인덱스에 저장된 값들의 합을 출력하세요

ex.
정수 : 5
배열 0번째 인덱스에 넣을 값 : 4
배열 1번째 인덱스에 넣을 값 : -4
배열 2번째 인덱스에 넣을 값 : 3
배열 3번째 인덱스에 넣을 값 : -3
배열 4번째 인덱스에 넣을 값 : 2
4 -4 3 -3 2
총 합 : 2
public void practice7() {
    Scanner sc = new Scanner(System.in);

    System.out.print("정수 : ");
    int num = sc.nextInt();

    int[] arr = new int[num];

    for(int i = 0; i < arr.length; i++) {
        System.out.printf("배열 %d번째 인덱스에 넣을 값 : ",i);
        arr[i] = sc.nextInt();
    }
    int sum = 0;
    for(int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + " ");
        sum += arr[i];
    }
    System.out.println();
    System.out.println("총 합 : " + sum);

    sc.close();
}

문제 08.

3이상인 홀수 자연수를 입력 받아 배열의 중간까지는 1부터 1씩 증가하여 오름차순으로 값을 넣고, 중간 이후부터 끝까지는 1씩 감소하여 내림차순으로 값을 넣어 출력하세요. 단, 입력한 정수가 홀수가 아니거나 3 미만일 경우 “다시 입력하세요”를 출력하고 다시 정수를 받도록 하세요.

ex. 정수 : 4
다시 입력하세요.
정수 : -6
다시 입력하세요.
정수 : 5
1 2 3 2 1
public void practice8() {
    Scanner sc = new Scanner(System.in);


    while(true) {
        System.out.print("정수 : ");

        int num = sc.nextInt();
        int count = 0;

        if ((num >= 3) && (num % 2 == 1)) {
            int[] arr = new int[num];

            for(int i = 0; i < arr.length; i++) {
                if(i <= arr.length/2) {
                    arr[i] = ++count;						
                }else {
                    arr[i]= --count;
                }
            }
            for(int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
            break;
        }else {
            System.out.println("다시 입력하세요.");
        }
    }
    sc.close();
}

강사님 풀이

public void practice8_teacher() {
    Scanner sc = new Scanner(System.in);

    // 조건 맞을때까지 반복 => while
    while(true) {
        // 정수 입력
        System.out.print("정수 : ");
        int num = sc.nextInt();

        if(num >= 3 && num % 2 == 1) {	// num이 3이상 홀수 일때만 작동
            int[] arr = new int[num];

            /*
             * 5입력시 => {1,2,3,2,1}	=> 2번 인덱스까지 증가 그 이후로 감소
             * 7입력시 => {1,2,3,4,3,2,1}	=> 3번 인덱스까지 증가 그 이후로 감소
             * 9입력시 => 				=> 4번 인덱스까지 증가 그 이후로 감소
             * 							=> 배열의 길이 / 2 인덱스까지 증가 그 이후부터 감소
             */
            int value = 1;

            for(int i = 0; i < arr.length; i++) {
                arr[i] = value;
                if(i < arr.length / 2) {
                    value ++;

                }else {
                    value--;
                }
            }

            for(int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
            break;

        }else {
            System.out.println("다시 입력하세요.");
        }
    }
    sc.close();
}

문제 09.

사용자가 입력한 값이 배열에 있는지 검색하여 있으면 “OOO 치킨 배달 가능“, 없으면 “OOO 치킨은 없는 메뉴입니다“를 출력하세요. 단, 치킨 메뉴가 들어가있는 배열은 본인 스스로 정하세요.

ex. 치킨 이름을 입력하세요 : 양념
양념치킨 배달 가능

치킨 이름을 입력하세요 : 불닭 
불닭치킨은 없는 메뉴입니다.
public void practice9() {
    Scanner sc = new Scanner(System.in);
    String[] arr = {"양념", "후라이드", "순살"};

    System.out.print("치킨 이름을 입력하세요. : ");
    String food = sc.nextLine();
    int yesNo = 0;

    for(int i = 0; i < arr.length; i++) {

        if(arr[i].equals(food)) {
            yesNo += 1;
            break;
        }
    }
    if(yesNo == 0) {
        System.out.println(food + "은(는) 없는 메뉴입니다.");
    }else {
        System.out.println(food + "치킨 배달 가능");
    }
    sc.close();

}	// return; 사용해보기.

문제 10.

주민등록번호 성별자리 이후부터 *로 가리고 출력하세요. 단, 원본 배열 값은 변경 없이 배열 복사본으로 변경하세요.

ex.
주민등록번호(-포함) : 123456-1234567
123456-1******
public void practice10() {
    Scanner sc = new Scanner(System.in);

    System.out.print("주민등록번호(-포함) : ");
    String num = sc.nextLine();

    char[] arr = new char[14];

    for(int i = 0; i < num.length(); i++) {
        arr[i] = num.charAt(i);
    }
    char[] copy = arr.clone();

    for(int i = 7; i < copy.length; i++) {
        copy[i] = '*';
    }
    System.out.println(copy);
    sc.close();

}

문제 11.

10개의 값을 저장할 수 있는 정수형 배열을 선언 및 할당하고 1~10 사이의 난수를 발생시켜 배열에 초기화한 후 출력하세요.

ex.
9 7 6 2 5 10 7 2 9 6
public void practice11() {
    int[] arr = new int[10];
    for(int i = 0; i < arr.length; i++) {
        int random = (int)(Math.random()* 10 +1);
        arr[i] = random;
    }
    for(int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + " ");
    }
}

문제 12.

10개의 값을 저장할 수 있는 정수형 배열을 선언 및 할당하고 1~10 사이의 난수를 발생시켜 배열에 초기화 후 배열 전체 값과 그 값 중에서 최대값과 최소값을 출력하세요.

ex. 5 3 2 7 4 8 6 10 9 10
최대값 : 10
최소값 : 2
public void practice12() {
    int[] arr = new int[10];

    for(int i = 0; i < arr.length; i++) {
        int random = (int)(Math.random() * 10 + 1);
        arr[i] = random;
    }
    int max = arr[0];
    int min = arr[0];

    for(int i = 0; i < arr.length-1; i++) {
        if(arr[i] >= max) {
            max = arr[i]; 
        }
        if(arr[i] <= min) {
            min = arr[i];
        }
    }
    for(int i = 0; i < arr.length; i++) {
        System.out.print(arr[i]+ " ");
    }
    System.out.println();
    System.out.println("최대 값 : " + max);
    System.out.println("최소 값 : " + min);
}

문제 13.

10개의 값을 저장할 수 있는 정수형 배열을 선언 및 할당하고 1~10 사이의 난수를 발생시켜 중복된 값이 없게 배열에 초기화한 후 출력하세요.

ex.
4 1 3 6 9 5 8 10 7 2
public void practice13() {	// ******참고했음
    int[] arr = new int[10];

    for(int i = 0; i < arr.length; i++) {
        arr[i] = (int)(Math.random()*10+1);

        for(int j = 0; j < i; j++) {
            if(arr[i] == arr[j]) {
                i--;
            }
        }
    }

    for(int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + " ");
    }
}

 


강사님 풀이

public void practice13_teacher() {
    int[] arr = new int[10];
    for(int i = 0; i < arr.length; i++) {
        arr[i] = (int)(Math.random()*10+1);
        for(int j = 0; j < i; j++){
            if(arr[i] == arr[j]) {
                i--;	// 랜덤한수를 다시 만드는 코드
            }
        }
    }
    for(int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + " ");
    }
}

문제 14.

로또 번호 자동 생성기 프로그램을 작성하는데 중복 값 없이 오름차순으로 정렬하여 출력하세요.

ex.
3 4 15 17 28 40
public void practice14() {

    int[] lotto = new int[6];

    for(int i = 0; i < lotto.length; i++) {
        int random = (int)(Math.random()*45+1);
        lotto[i] = random;

        for(int j = 0; j < i; j++) {
            if(lotto[i] == lotto[j]) {
                i--;
                break;
            }
        }
    }
    for(int i = 0; i < lotto.length; i++) {
        System.out.print(lotto[i] + " ");
    }
    System.out.println();

    int temp = 0;	// 임시저장소 .. 근데 이렇게 해도 되나...
    for(int i = 0; i < lotto.length; i++) {

        for(int j = i; j < lotto.length; j++) {
            if(lotto[i] > lotto[j]) {	// 만약 45 > 10 이면
                temp = lotto[i];	// 45는 임시저장소

                lotto[i] = lotto[j];	// 앞에 자리에 10 이들어가고

                lotto[j] = temp;	// 뒤에 45가 들어간다.
            }
        }
    }

    for(int i = 0; i < lotto.length; i++) {
        System.out.print(lotto[i] + " ");
    }

}

문제 15.

문자열을 입력 받아 문자열에 어떤 문자가 들어갔는지 배열에 저장하고 문자의 개수와 함께 출력하세요.

ex.
문자열 : application
문자열에 있는 문자 : a, p, l, i, c, t, o, n
문자 개수 : 8
public void practice15() {
    Scanner sc = new Scanner(System.in);

    System.out.print("문자열 : ");
    String str = sc.nextLine();
    char[] arr = new char[str.length()];
    int count = 0;

    for(int i = 0; i < arr.length; i++) {
        int same = 0;			// 중복체크 변수 선언, 0이면 다르다. 1이면 같다.
        arr[i] = str.charAt(i);	// 어떤문자가 들어갔는지 배열에 저장 하고 출력이라기보단 
                                // 이건 배열에 저장하고 중복없이 출력
                                // 어떻게 수정하지..

        for(int j = 0; j < i; j++) {
            if(arr[i] == arr[j]) {
                same = 1;
            }else {
                continue;
            }

        }
        if(same == 0) {
            if(i == 0) {
                System.out.print("문자열에 있는 문자 : " + arr[i]);
            }else {
                System.out.print(", " + arr[i]);
            }
            count ++;	
        }			
    }
    System.out.println();
    System.out.println("문자 개수 : " + count);
    sc.close();
}

강사님 풀이

public void practice15_teacher() {
    Scanner sc = new Scanner(System.in);

    System.out.print("문자열 : ");
    String str = sc.nextLine();

    char[] arr = new char[str.length()];
    int count = 0;	// 문자 개수 출력

    System.out.print("문자열에 있는 문자 : ");

    for(int i = 0; i < arr.length; i++) {	// char 배열 값대입
        arr[i] = str.charAt(i);

        // 중복제거 ?? 출력.. apple => a p l e
        boolean flag = true;

        for(int j = 0; j < i; j++) {
            if(arr[j] == arr[i]) {
                flag = false;
            }

        }
        if(flag) {	// if(flag) == if(flag == true)
            count ++ ;
            if(i == 0) {
                System.out.print(arr[i]);
            }else {
                System.out.print(", " + arr[i]);
            }
        }
    }
    System.out.println();
    System.out.println(count);
    sc.close();
}

문제 16.

사용자가 입력한 배열의 길이만큼의 문자열 배열을 선언 및 할당하고 배열의 인덱스에 넣을 값 역시 사용자가 입력하여 초기화 하세요. 단, 사용자에게 배열에 값을 더 넣을지 물어보고 몇 개를 더 입력할 건지, 늘린 곳에 어떤 데이터를 넣을 것인지 받으세요. 사용자가 더 이상 입력하지 않겠다고 하면 배열 전체 값을 출력하세요.

ex.
배열의 크기를 입력하세요 : 3
1번째 문자열 : 자바의 정석
2번째 문자열 : 알고리즘
3번째 문자열 : C프로그래밍
더 값을 입력하시겠습니까?(Y/N) : y
더 입력하고 싶은 개수 : 2
4번째 문자열 : 인간관계
5번째 문자열 : 자기계발
더 값을 입력하시겠습니까?(Y/N) : y
더 입력하고 싶은 개수 : 1
6번째 문자열 : 영단어600
더 값을 입력하시겠습니까?(Y/N) : n
[자바의 정석, 알고리즘, C프로그래밍, 인간관계, 자기계발, 영단어600]
public void practice16() {
    Scanner sc = new Scanner(System.in);

    System.out.print("배열의 크기를 입력하세요 : ");
    int num = sc.nextInt();
    sc.nextLine();
    String[] arr = new String[num];

    for (int i = 0; i < num; i++) {

        System.out.print(i+1 + "번째 문자열 : ");
        String str = sc.nextLine();
        arr[i] = str;
    }

    int arrLength = 0;	// ************

    while(true) {
        System.out.print("더 값을 입력하시겠습니까?(Y/N) : ");
        char yesNo = sc.nextLine().charAt(0);

        if (yesNo == 'y' || yesNo == 'Y') {
            System.out.print("더 입력하고 싶은 개수 : ");
            int add = sc.nextInt();
            sc.nextLine();

            arr = Arrays.copyOf(arr, num += add);	// 배열은 확장이 안되므로 새로 만들어야함

            for(int i = num-add; i < arr.length; i++) {
                System.out.print(i+1 + "번째 문자열 : ");
                String strAdd = sc.nextLine();
                arr[i] = strAdd;
                arrLength = arr.length;
                continue;
            }

        }else if(yesNo == 'N' || yesNo == 'n'){
            System.out.print("[");
            for(int i = 0; i < arrLength; i++) {	// arr.length 가 if문의 {}안에서 선언된 지역변수라 여기에서 호출이안된다..
                                                    // 그래서 *******부분처럼 새로운 변수를 만들어서 대입
                if(i < arrLength - 1) {
                    System.out.print(arr[i] + ", ");	// 어떻게 마지막 값 뒤에는 ,를 안붙이지?
                }else {									// 이게 맞나 ? 
                    System.out.print(arr[i] + "]");
                }
            }
            break;
        }
    }
    sc.close();
}

강사님 풀이

public void practice16_teacher() {
    Scanner sc = new Scanner(System.in);
    System.out.print("배열의 크기를 입력하세요 : ");
    int num = sc.nextInt();

    String[] origin = new String[num];
    String[] copy = null;
    sc.nextLine();

    for(int i = 0; i < origin.length; i++) {
        System.out.printf("%d번째 문자열 : ", i+1);
        origin[i] = sc.nextLine();
    }
    while(true) {
        System.out.print("더 값을 입력하시겠습니까?(Y/N) : ");
        char ch = sc.nextLine().charAt(0);	// y Y n N

        if(ch == 'y' || ch == 'Y') {	// 더 입력하겠다는 경우
            System.out.print("더 입력하고 싶은 개수 : ");
            num = sc.nextInt();	// num 또 써도 됨

            copy = Arrays.copyOf(origin,origin.length + num);
            sc.nextLine();

            for(int i = origin.length; i < copy.length; i++) {
                System.out.printf("%d번째 문자열 : ", i+1);
                copy[i] = sc.nextLine();
            }

            origin = copy;	// origin의 주소값을 바꿔줌
        }else {	// 그만하는 경우
            System.out.print("[");
            for(int i = 0; i < origin.length; i++) {
                if(i == copy.length - 1) {	// 마지막 인덱스인경우
                    System.out.printf("%s", copy[i]);
                }else {
                    System.out.printf("%s, ",copy[i]);
                }
            }
            System.out.print("]");
            break;
        }

    }
    sc.close();
}

 

    'JAVA' 카테고리의 다른 글
    • [자바/JAVA] 프로그래밍 - 클래스(Class) 2.캡슐화
    • [자바/JAVA] 프로그래밍 - 클래스(Class) 1.추상화
    • [자바/JAVA] 프로그래밍 - 버블정렬 (Bubble Sort)
    • [자바/JAVA] 프로그래밍 - 배열복사 (Array copy)
    21종
    21종
    코딩 공부한 것 정리하려고 만든 블로그

    티스토리툴바