자바 8일차

선장원·2021년 10월 13일

자바

목록 보기
9/24

8일차 (10/13)

복습

은행 ATM 기기 만들기

		/*
		 * 1. 예금 2. 출금 3. 잔고 4. 종료 선택
		 * 
		 * 
		 * 
		 * 뭐지 스위치 케이스로 만드는게 아닌가 if로도 만들 수 있긴한데
		 * 
		 * 
		 */
		Scanner scan = new Scanner(System.in);

		int num1 = 0, num2 = 0; // 1은 잔고 2는 금액입력
		String var = ""; // 선택
		boolean run = true;
		System.out.println("-------------------------------");
		System.out.println("1. 예금 2. 출금 3. 잔고  4. 종료");
		System.out.println("-------------------------------");

		do {
			System.out.print("선택 > ");
			var = scan.nextLine(); //scan이 오류로 Int랑 Line랑 섞이면서 두번 입력됨
			// BefferedReader 쓰자

			switch (var) {
			case "예금":
				System.out.print("예금액 : ");
				num2 = scan.nextInt();
				num1 += num2;
				System.out.println("현재 잔액은 " + num1 + " 원 입니다.");
				break;
			case "출금":
				System.out.print("출금액 : ");
				num2 = scan.nextInt();
				if (num1 > num2) {
					num1 -= num2;
					System.out.println("현재 잔액은 " + num1 + " 원 입니다.");
				} else {
					System.out.println("잔고가 부족합니다.");
					System.out.println("현재 잔액은 " + num1 + " 원 입니다.");
				}
				break;
			case "잔고":
				System.out.println("현재 잔액은 " + num1 + " 원 입니다.");
				break;
			case "종료":
				System.out.println("종료합니다.");
				run = false;
				break;
			default:
				System.out.println("잘못입력했습니다");
				break;

			}
			scan.nextLine();
		} while (run);
		scan.close();

이거는 스캐너가 이상해서 좀 별로임

bufferedReader쓰는게 좋아

		/*
		 * 1. 예금 2. 출금 3. 잔고 4. 종료 선택
		 * 
		 * 
		 * 
		 * 뭐지 스위치 케이스로 만드는게 아닌가 if로도 만들 수 있긴한데
		 * 
		 * 
		 */
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int num1 = 0, num2 = 0; // 1은 잔고 2는 금액입력
		String var = ""; // 선택
		boolean run = true;
		System.out.println("-------------------------------");
		System.out.println("1. 예금 2. 출금 3. 잔고  4. 종료");
		System.out.println("-------------------------------");

		do {
			System.out.print("선택 > ");
			var = br.readLine();

			switch (var) {
			case "예금":
				System.out.print("예금액 : ");
				num2 = Integer.parseInt(br.readLine());
				num1 += num2;
				System.out.println("현재 잔액은 " + num1 + " 원 입니다.");
				break;
			case "출금":
				System.out.print("출금액 : ");
				num2 = Integer.parseInt(br.readLine());
				if (num1 > num2) {
					num1 -= num2;
					System.out.println("현재 잔액은 " + num1 + " 원 입니다.");
				} else {
					System.out.println("잔고가 부족합니다.");
					System.out.println("현재 잔액은 " + num1 + " 원 입니다.");
				}
				break;
			case "잔고":
				System.out.println("현재 잔액은 " + num1 + " 원 입니다.");
				break;
			case "종료":
				System.out.println("종료합니다.");
				run = false;
				break;
			default:
				System.out.println("잘못입력했습니다");
				break;
				
			}
		} while (run);
		br.close();

배열

드디어 배열!!!!

기존 변수 : 변수 하나에 데이터(객체)를 하나 담는 구조

배열 : 배열 하나에 여러 개의 데이터를 담을 수 있음.
단, 같은 타입이여야 함!

인덱스(index)가 존재하고 인덱스를 통해 해당 데이터에 접근할 수 있음.
인덱스 번호는 0번 부터 시작

a 배열 (4개 공간/데이터)

표가 안되니 스샷으로
크기 : 4
인덱스 : 3

a[0] = 7

print(a[0]); = 7

배열 단점

크기를 유동적으로 바꿀 수 없음.
배열 내부 데이터 추가, 삭제 등이 불편함.

배열 선언

크기가 5인 정수형 배열
int a[] = new int[5];

1, 2, 3의 데이터를 갖는 정수형 배열
int[] b = {1, 2, 3};

문자열 배열
String strVar[] ={“가나”, “다라”. “ab”, “cd”};

배열 출력

System.out.println(num[0]);

System.out.println(strvar1[3]);

배열 데이터 바꾸기

num[1] = 99;
num배열의 1인덱스 자리를 99로 바꾼다

String strVar[1] = “바보”;

배열의 크기 확인

배열에 몇 개의 데이터가 들어있는지
.length
System.out.println(num.length);
num 배열의 데이터 크기 확인

변수로 지정해서 사용가능

int numSize = num.length;

배열 크기 정하기

int[] arr = new int[3];
arr배열의 크기는 3 인덱스는 0~2

배열 안의 기본값은 0으로 되어있다.

배열의 크기는 사용하기 전 언제든지 정할 수 있다
int[] num = null;
위에 배열을 만들어 두고

어디든지 가서 배열의 크기를 바꿀 수 있다.
num = new int[5];

배열 순서대로 정리하기

import java.util.Arrays; 설치용

Arrays.sort(배열 이름);
을 사용하면 배열 안을 크기 순으로 정리해준다
배열의 0번 인덱스는 최솟값 끝 번호는 최댓값이다.

이거는 백준 알고리즘 문제 풀려고 찾은 것이다.
아니 내가 만든것도 되는데 왜 안해주는거야 짜증나

실습

for문을 활용해서 출력, 총합, 평균

		// 34, 555,7898, 1111이 들어 있는 정수형 배열 num을 선언하고
		// 이 배열에 들어잇는 값을 출력해보세요

		int[] arr = { 34, 555, 7897, 1111 };
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
		// 총합과 평균을 계산
		int result = 0;
		for (int i = 0; i < arr.length; i++) {
			result += arr[i];
		}
		System.out.println("총합 : " + result);
		System.out.println("평균 : " + (result / arr.length));

정수를 입력 받아서 배열 만들고 총합 평균 구하기

		/*
		 * 크기가 3인 정수형 배열을 선언하고 스캐너를 이용해 배열에 데이터를 저장하고 저장된 값의 총합, 평균을 계산하시오
		 */
		Scanner scan = new Scanner(System.in);

		int[] arr = new int[3];// 배열
		int num = 0;// 입력
		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			System.out.print((i+1)+"번 정수 입력 : ");
			num = scan.nextInt();
			arr[i] = num;
		}

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

		}

		for (int i = 0; i < arr.length; i++) {
			sum += arr[i];
		}
		System.out.println("총합 : " + sum);
		System.out.println("평균 : " + (sum / arr.length));

정수 입력 받아 최댓값 구하기

		/*
		 * 크기가 5인 정수형 배열을 선언하고 스캐너로 값을 받은뒤 입력 받은 값 중에서 가장 큰 값을 출력하시오
		 * 
		 */
		Scanner scan = new Scanner(System.in);

		int[] arr = new int[5]; // 배열
		int num = 0;// 받는 숫자
		int max = 0; // 최대값을 구하기 위해 만듬
		
		for (int i = 0; i < arr.length; i++) {
			System.out.print((i + 1) + "번 정수 입력 : ");
			num = scan.nextInt();
			arr[i] = num;
			if (arr[i] > max) {
				max = arr[i];// 최댓값 구하기 끝
			} 
		} // 배열 만들기 끝

		System.out.println("최댓값은 " + max);
		scan.close();

배열에서 정수 인덱스 번호 구하기

		/*
		 * 아래와 같이 배열이 있을 때 어떤 숫자가 몇번 인덱스에 있는지
		 *  출력 8을 입력하면 8은 9번 인덱스에 있습니다.
		 */
		Scanner scan = new Scanner(System.in);

		int num[] = { 5, 2, 1, 3, 4, 7, 6, 9, 10, 8 };
		boolean run = true;
		int num2 = 0;
		System.out.print("정수를 입력하세요 : ");
		while (run) {
			num2 = scan.nextInt();
			if (num2 > 0 && num2 < 11) {
				for (int i = 0; i < num.length; i++) {
					if (num[i] == num2) {
						System.out.println(num2 + "는 " + i + "번 인덱스에 있습니다.");
						run = false;
					}
				}
			} else {
				System.out.print("다시 입력하세요 : ");

			}
		}
		scan.close();

거스름돈 동전 갯수 구하기

		/*
		 * 거스름 돈 계산하기
		 */
		Scanner scan = new Scanner(System.in);

		int[] coin = { 500, 100, 50, 10 };
		int num1 = 0; // 거스름 돈
		int num2 = 0; // 남은돈
		
		System.out.print("거스름 돈 : ");
		num1 = scan.nextInt();

		for (int i = 0; i < coin.length; i++) {
			if (num1 > coin[i]) {
				num2 = num1 / coin[i];
				num1 -= (num2*coin[i]);
				System.out.println(coin[i]+"원 "+num2+"개");
				System.out.println(num1+"원 남음");
			}

		}

이제부터 코드 만들 때 옆에 주석으로 하나하나 설명을 써가면서 만들어야겠다
이거도 처음부터 연습해야지 나중에 자연스럽게 하지

아 맞다 깃허브도 해야하는데
빨리하고 자야지

profile
코딩도전기

0개의 댓글