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 반복문으로 좌석 선택까지는 성공 / 출력은 못함
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] method(메서드) (0) | 2022.10.04 |
---|---|
[Java] String 클래스, 문자열 자르기(subString, split, toCharArray) (0) | 2022.09.30 |
[Java] 탈출문(break, continue, return), 무한루프 while(for), array (0) | 2022.09.28 |
[Java] for, 중복 for, 향상된 for(배열 담기) (0) | 2022.09.27 |
[Java] 반복문(while, do~while, for) 02 + array (0) | 2022.09.26 |