배열 실습문제

DONI·2021년 9월 3일
1

Java

목록 보기
17/46
post-thumbnail

🚩 실습문제 4

문제 ( 메서드명 : public void practice4( ) { } )

정수 5개를 입력 받아 배열을 초기화 하고
검색할 정수를 하나 입력 받아 배열에서 같은 수가 있는 인덱스를 찾아 출력.
배열에 같은 수가 없을 경우 “일치하는 값이 존재하지 않습니다“ 출력

실행 화면 1

입력 0 : 5
입력 1 : 8
입력 2 : 9
입력 3 : 10
입력 4 : 4
검색할 값 : 8
인덱스 : 1

실행 화면 2

입력 0 : 5
입력 1 : 8
입력 2 : 9
입력 3 : 10
입력 4 : 4
검색할 값 : 1
일치하는 값이 존재하지 않습니다.

소스코드

public void practice4() {
	Scanner sc = new Scanner(System.in);
	
	int[] arr = new int[5];
	
	for (int i = 0; i < arr.length; i++) {
		System.out.print("입력 " + i + " : ");
		arr[i] = sc.nextInt();
	}
	
	System.out.print("검색할 값 : ");
	int search = sc.nextInt();
	
	boolean flag = true;
	
	for (int i = 0; i < arr.length; i++) {
		if (search == arr[i]) {
			System.out.println("인덱스 : " + i);
			flag = false;
			break;
		}
	}
	
	if (flag)
		System.out.println("일치하는 값이 존재하지 않습니다.");
	
	sc.close();
}

🚩 실습문제 5

문제 ( 메서드명 : public void practice5( ) { } )

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

실행 화면

문자열 : 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.next().charAt(0);
	
	char[] arr = new char[str.length()];
	String index = "";
	int count = 0;

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

🚩 실습문제 6

문제 ( 메서드명 : public void practice6( ) { } )

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

실행 화면

정수 : 5
배열 0번째 인덱스에 넣을 값 : 4
배열 1번째 인덱스에 넣을 값 : -4
배열 2번째 인덱스에 넣을 값 : 3
배열 3번째 인덱스에 넣을 값 : -3
배열 4번째 인덱스에 넣을 값 : 2
4 -4 3 -3 2
총 합 : 2

소스코드

public void practice6() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("정수 : ");
	int num = sc.nextInt();
	
	int[] arr = new int[num];
	int sum = 0;
	
	for (int i = 0; i < arr.length; i++) {
		System.out.print("배열 " + i + "번째 인덱스에 넣을 값 : ");
		arr[i] = sc.nextInt();
		sum += arr[i];
	}
	
	for (int i = 0; i < arr.length; i++)
		System.out.print(arr[i] + " ");
	
	System.out.println("\n총 합 : " + sum);
	
	sc.close();
}

🚩 실습문제 7

문제 ( 메서드명 : public void practice7( ) { } )

주민등록번호 번호를 입력 받아 char 배열에 저장한 후 출력하세요.
단, char 배열 저장 시 성별을 나타내는 숫자 이후부터 * 로 저장하세요.

실행 화면 1

주민등록번호(-포함) : 123456-1234567
123456-1 * * * * * *

소스코드

public void practice7() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("주민등록번호(-포함) : ");
	String str = sc.nextLine();
	
	char[] arr = new char[str.length()];
	
	for (int i = 0; i < arr.length; i++) {
		if (i >= 8)
			arr[i] = '*';
		else
			arr[i] = str.charAt(i);
		System.out.print(arr[i]);
	}
	
	sc.close();
}

🚩 실습문제 8

문제 ( 메서드명 : public void practice8( ) { } )

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

실행 화면

정수 : 4
다시 입력하세요.
정수 : -6
다시 입력하세요.
정수 : 5
1, 2, 3, 2, 1

소스코드

public void practice8() {
	Scanner sc = new Scanner(System.in);
	
	int input;
	int[] arr;
	int num = 1;
	
	while (true) {
		System.out.print("정수 : ");
		input = sc.nextInt();
		
		if (input < 3 || input % 2 == 0)
			System.out.println("다시 입력하세요.");
		else {
			arr = new int[input];
			
			for (int i = 0; i < arr.length; i++) {
				if (i < arr.length / 2)
					arr[i] = num++;
				else
					arr[i] = num--;
				
				if (i < arr.length - 1)
					System.out.print(arr[i] + ", ");
				else
					System.out.println(arr[i]);
			}
			
			break;
		}
	}
	
	sc.close();
}

🚩 실습문제 9

문제 ( 메서드명 : public void practice9( ) { } )

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

실행 화면

발생한 난수 : 9 7 6 2 5 10 7 2 9 6

소스코드

public void practice9() {
	int[] arr = new int[10];
	
	System.out.print("발생한 난수 : ");
	
	for (int i = 0; i < arr.length; i++) {
		arr[i] = (int)(Math.random() * 10 + 1);
		
		System.out.print(arr[i] + " ");
	}
}

🚩 실습문제 10

문제 ( 메서드명 : public void practice10( ) { } )

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

실행 화면

발생한 난수 : 5 3 2 7 4 8 6 10 9 10
최대값 : 10
최소값 : 2

소스코드

public void practice10() {
	int[] arr = new int[10];
	int max = Integer.MIN_VALUE;
	int min = Integer.MAX_VALUE;
	
	System.out.print("발생한 난수 : ");
	
	for (int i = 0; i < arr.length; i++) {
		arr[i] = (int)(Math.random() * 10 + 1);
		
		if (arr[i] > max)
			max = arr[i];
		
		if (arr[i] < min)
			min = arr[i];
		
		System.out.print(arr[i] + " ");
	}
	
	System.out.print("\n최대값 : " + max);
	System.out.print("\n최소값 : " + min);
}

🚩 실습문제 11

문제 ( 메서드명 : public void practice11( ) { } )

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

실행 화면 1

4 1 3 6 9 5 8 10 7 2

소스코드

public void practice11() {
	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[j] == arr[i]) {
				i--;
				break;
			}
		}
	}

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

🚩 실습문제 12

문제 ( 메서드명 : public void practice12( ) { } )

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

실행 화면

3 4 15 17 28 40

소스코드

public void practice12() {
		int[] arr = new int[6];
		
		for (int i = 0; i < arr.length; i++) {
			arr[i] = (int)(Math.random() * 45 + 1);
			
			for (int j = 0; j < i; j++) {
				if (arr[j] == arr[i]) {
					i--;
					break;
				}
			}
		}
		
		Arrays.sort(arr);

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

🚩 실습문제 13

문제 ( 메서드명 : public void practice13( ) { } )

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

실행 화면

문자열 : application
문자열에 있는 문자 : a, p, l, i, c, t, o, n
문자 개수 : 8

소스코드

public void practice13() {
	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++) {
		arr[i] = str.charAt(i);
		
		boolean flag = true;
	
		for (int j = 0; j < i; j++) {
			if (arr[j] == arr[i])
				flag = false;
		}
		
		if (flag) {
			if (i == 0)
				System.out.print(arr[i]);
			else
				System.out.print(", " + arr[i]);
                
			count++;
		}
	}

	System.out.println("\n문자 개수 : " + count);
	
	sc.close();
}

🚩 실습문제 14

문제 ( 메서드명 : public void practice14( ) { } )

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

실행 화면

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

소스코드

public void practice14() {
	Scanner sc = new Scanner(System.in);
	
	System.out.print("배열의 크기를 입력하세요 : ");
	String[] arr = new String[sc.nextInt()];
	sc.nextLine();
	
	int index = 0;
	
	while (true) {
		for (int i = index; i < arr.length; i++) {
			System.out.print(i + 1 + "번째 문자열 : ");
			arr[i] = sc.nextLine();
		}
		
		index = arr.length;

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

		if (plus == 'Y' || plus == 'y') {
			System.out.print("더 입력하고 싶은 개수 : ");
			String[] arr2 = new String[arr.length + sc.nextInt()];
			sc.nextLine();
			
			System.arraycopy(arr, 0, arr2, 0, arr.length);
			arr = arr2;
			
		} else if (plus == 'N' || plus == 'n') {
			System.out.println(Arrays.toString(arr));
			break;
			
		} else {
			System.out.println("잘못 입력하셨습니다.");
			continue;
		}

	}
	
	sc.close();
}

🏹 Math.random( )

0.0 이상 1.0 미만의 double 형 난수 하나를 발생시키는 메서드

profile
틀린 내용이 있다면 댓글 또는 이메일로 알려주세요 ❤ꔛ❜

0개의 댓글