원지의 개발
article thumbnail
728x90

array

  • array 삽입, 수정, 삭제 연습

array insert (삽입) + 문자열로 출력 str

ArrayInsert - 입력받은 문자열 순서대로 저장

1. 문자열 배열 선언, 생성

     String [ ]arr = new String[100];

2. 무한반복 안에서 문자열 입력 받음 => scanner 사용

    변수 menu 입력받음

3. if 조건문 = 멈춰라

    문자열 비교 - 변수.equals( "내용" ) break;

4. menu 입력 받으면 배열에 저장 = 배열 초기화

     arr[ count ] = menu;

     인덱스 변수 count 생성 -> 저장 -> 1씩 증가

 

 

 

 

 

 

 

 

문자열 str 출력 방법 [ 일, 이, 삼, 사 오 ]

1. 문자열 str 생성 = [

2. for 반복문

    str 옆에 배열값 + , 쉼표&띄어쓰기 추가

    str += att[i];    str += ", ";

3. 마지막 배열값 전에 ] 출력해야 하므로

    쉼표+띄어쓰기(, ) 전에 if 조건문 ~ break 구문 추가

    if ( i == count-1) {

        str += "]";

        break;

     }

4. str 출력 - str옆으로 반복문, 조건문이 출력됨

 

 

 


array update (수정)

ArrayUpdate - 문자열 배열에서 값을 찾아 이름 변경

 

1. 문자열 배열 선언, 생성, 초기화

2. 변수 name 생성, 찾을 이름 입력 => scanner 사용

3. 탐색해야 하므로 for 반복문 안에서 if 조건문

    문자열 비교해서 맞으면 이름 새로 변경

    name.equals(arr[i]) 이면

    변수 n 생성, 변경할 이름 입력받음

    arr[i] = n 으로 수정

3. 찾으면 수정 / 못 찾으면 별명 존재X

    논리식 boolean, flag 변수 생성

    flag = true;

4. if 조건문

    조건 flag = true 이면 수정

    else면 별명이 존재하지 X

 

 

 

 

 

 

 


array delete (삭제)

  • 배열에서는 삭제 개념 X
  • 삭제가 일어날 때 뒤의 원소를 앞으로 당겨서 없애는 것처럼 보이게 만듦

ArrayDelete - 문자열 배열에서의 값 삭제

 

1. 문자열 배열의 선언, 생성, 초기화

2. 삭제할 이름 name 변수 입력 => scanner 사용

3. for 반복문 안에서 if 조건문

    배열의 값과 입력한 name의 값이 같을 때 배열의 길이(count) 하나씩 감소

    int count = arr.length 배열의 길이 = count 변수 생성

    name.equals(arr[i]) 일때 count--

4. 길이가 하나씩 줄면서 뒤의 배열값이 앞으로 하나씩 와야 하기 때문에 for 반복문 사용

    int j 는 i와 같고, count-1 = 길이 -1까지

    arr[ j ] = arr[ j+1 ]

    찾은 위치에서 뒤 원소를 당김

5. array insert의 문자열 str 출력 방법과 같음

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Quiz

Quiz19 -  좌석 선택 프로그램

프로그램이 돌아가는 방법

1. 좌석의 크기=사람수를 설정

    저장하기 전 직전까지 중복값이 있는지 확인

2. 사람수  만큼 랜덤한 배열 생성해서 랜덤값을 저장

3. 중복없는 배열이 생성됐다면 아래 ○ 이용해서 배열 크기 출력

4. 스캐너를 통해 랜덤으로 배정된 좌석 선택

5. 선택좌석을 출력하면서 선택한 좌석 아래는 ● 칠하고,

    선택된 자리는 0으로 변경 혹은 문자열 배열 만들기

=> 제대로 선택된 좌석이면 자리번호를 공개하고 출력
     제대로 선택되지 않은 좌석이면 다시 선택을 출력

6. 좌석이 다 선택되었으면 프로그램 종료

 

 

 

왼 - 내 풀이 / 오 - 선생님 풀이

선생님 풀이 - 좌석 입력 / 좌석 출력 둘 다 while 무한반복 사용

1. 좌석의 크기 = 사람수를 나타내는 size 변수 생성 => scanner 사용

2. 그에 맞게 배열 선언, 생성

    int[ ] arr = new int [size];

3. 무한반복문 안에 랜덤값: 배열에 넣기 전 중복인지 확인 후 마지막까지 채워지면 빠져나오겠다

    랜덤값 seat 변수 생성 = (int)(Math.random( )*size + 1;

    for반복문 만들 때, 현재 위치 나타내는 index 변수 생성

    배열 인덱스는 index-1

    if 조건문

if(arr[i] == seat) continue re;
}

arr[index] = seat;
index++;

if(index == size) break;

 

 

 

 

 

 

선생님 풀이와 다른 점 - 해결X

1. while문 안에서 answer 입력까지는 같음

2. if 조건문 1

 

 

 

import java.util.Arrays;
import java.util.Scanner;

public class Quiz19_2 {

	public static void main(String[] args) {
		
		/*
		 * 1. 사람수(정수)를 입력 받습니다.
		 * 2. 입력받은 사람수 만큼 랜덤한 배열을 생성해서 중복되지 않게 랜덤값을 저장
		 * 
		 * 랜덤값 크기 1 <= x <= 사람수
		 * 
		 * 힌트> 집어넣기 전에 집어넣기 직전까지 중복값이 있는지 확인
		 * 
		 * 3. 중복되지 않는 배열이 생성 되었다면, ○문자를 이용해서 배열의 크기를 출력
		 * 4. 스캐너를 통해서 랜덤으로 배정된 좌석을 선택할 수 있습니다.
		 * 5. 제대로 선택된 좌석이면 자리번호를 공개하고 출력
		 * 	  제대로 선택되지 않은 좌석이면 다시 선택을 출력
		 * 
		 * 힌트> 선택된 자리는 0으로 변경 혹은 문자열 배열 만들기
		 */
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("배정할 좌석의 크기를 지정하세요> ");
		int size = scan.nextInt();
		
		int []arr = new int[size];
		
		int index = 0; // 현재 위치변수
		re: while(true) {
			
			int seat = (int)(Math.random()*size) + 1; // 1~size 랜덤수
			
			for(int i = 0; i < index; i++) {
				if(arr[i] == seat) continue re;
			}
			
			arr[index] = seat;
			index++;
			
			if(index == size) break;
			
		}
		
		
		// 좌석 출력
		int count = 0;
		while(true) {
			
			System.out.println(Arrays.toString(arr));
			
			System.out.println("-----------좌석 선택 프로그램------------");
			for(int i = 0; i < arr.length; i++) {
				System.out.printf("%-3d",i+1); // %-3d=3자리 공간을 잡고 왼쪽부터 채움
			}
								
			System.out.println();
					
			for(int i = 0; i < arr.length; i++) {
				
				if(arr[i] == 0) {
					System.out.printf("%-3s","● ");
				} else {
					System.out.printf("%-3s","○ ");
				}
			}
			
			System.out.println();
			
			System.out.print("좌석 선택> ");
			int seat = scan.nextInt();
			
			// 입력을 받은 직후
			if(arr[seat-1] == 0) {
				System.out.println("제대로 선택하실래요?");
			} else {
				System.out.println("선택좌석: " + arr[seat-1]);
				arr[seat-1] = 0; // 절대 선택이 될 수 없는 값으로 만듦
				count++; // 좌석 선택시 카운트증가
			}
			
			if(count == size) {
				System.out.println("종료합니다");
				break; // 탈출
			}
		}

		
	}
}

오늘 하루

더보기

기억에 남는 부분

- 문자열 변수 str 옆으로 출력하는 방법
  str += 옆으로 넣으면 됨 (if 조건문 사용가능)

어려운 부분

- array update 수정하는데 boolean 논리형 변수 사용 위치, 사용 이유

- arrtay delete 삭제 방법에서 뒤의 배열값을 앞으로 하나씩 끌어올 때 j값의 범위와 사용방법

문제 해결 부분

- Quiz19 for 반복문으로 좌석 선택까지는 성공 / 출력은 못함

 

728x90
profile

원지의 개발

@원지다

250x250