자바 7일차

선장원·2021년 10월 12일

자바

목록 보기
8/24

7일차(10/12)

흠 오늘은 복습위주라서 길게 쓸게 없다 ㅠㅠ

.equals()

스트링 클래스에서 같은 내용을 찾을 때 사용
클래스 타입에서 ==는 될 수도 있고 안 될 수도 있다.

기본형 변수 (primitive)

  • 변수 자체에 값이 들어있다.
    참조형 변수 (Reference)
  • 변수의 주소에 값이 들어있다.

String a = "종료";
String b = "종료";
라고 했을 때 참조형 변수에 같은 값이 들어 있다고 하더라고 컴퓨터는 참조형변수의 주소를 비교하기 때문에 false가 나온다 그래서 .equals()를 사용해서 주소안에 있는 값을 비교해야 한다.

equals는 실제 주소에 들어 있는 값을 비교해주는 메서드

상수 선언

절대로 변하지 않는 값으로 사용

// 상수 선언 : 값이 절대로 바뀌지 않음
public static final String ANSWERC = "종료";

프로그램을 종료 하는 키워드인 종료가 절대로 바뀌지 않을 때 사용

특정 메서드 안에 소속 될 수 없고 클래스 안에 사용
메인 메서드 앞에서 사용한다.

상수 선언은 모두 대문자로 하는 건가???????????

final

상수 선언 말고 final을 사용해서 값을 뒤에서 변경할 수 없게 만들 수 있다.
final String end2 = "종료";

end2에 들어가는 마지막 값이 종료이다

final로 선언한 변수는 다시 대입을 할 수 없다

평균 구하기

  1. result / i;
  2. double avg = result / i;
  3. double avg = (double)result / i;

1번 처럼하면 소수점 이하는 구할 수 없다.
2번 처럼하면 소수점은 나오지만 결과는 소수점을 버린 상태에서 소수점이 생김
3번 처럼해야지 결과값을 소수점까지 구할 수 있다.

git clone

commit : 수정이력
origin : 원점

branch : 커밋들이 이어진

pc 1대를 2명이 사용하는 경우

git config --global --list로 username, mail확인 후 본인 계정으로 세팅

git config --global --unset user.name
git config --global --unset user.email
(이건 아닌가??? 내일 가서 해봐야겠다)

제어판
사용자계정 > 자격증명관리자> windows자격 증명에서 git hub 제거

제거 후 push 할 때 로그인창이 출력되는데 주의할점
git hub에 본인 계정으로 로그인 되어 있는지 반드시 확인
세팅 완료 후 commit, push하면 됨.

git hub에 있는 소스를 로컬 pc로 가져올 때

git clone ‘깃주소’
주의: 소스가 프로젝트 폴더형태로 다운되기 때문에 특정 프로젝트에서 하지않고 workspace에서 하는 것이 좋음.

파워셀 명령어
cd.. : 한 수준 위의 폴더로 이동

cd java : 내가 원하는 폴더로 이동

dir : 현재 폴더에 어떤파일이 있는지

폴더 불러오기

?????
뭐지 git hub에서 받아오는거는 어떻게하는거야
클론으로 받으면 남아 있던 폴더에 겹치는?
하루라도 빼먹으면 이상하게 겹치는 건가?????
자바 워크스페이스랑 프로젝트명을 같게 하고 클론을 받으면 부족한 부분만 알아서 채워주는 건가

실습

문자로 입력 종료

	public static final String ANSWERC = "종료";
	// 상수 선언
		/*
		 * 스트링에서는 참조형 클래스타입에서 ==는 될 때도 있고 안 될 때도 있다 .equals()를 활용
		 */
		Scanner scan = new Scanner(System.in);

		String ms = "", end = "종료";
		boolean run = true;
		System.out.println("메시지를 입력하세요 ");
		System.out.println("프로그램을 종료 하려면 '종료'를 입력하세요");
		while (run) {
			System.out.print(">");
			ms = scan.nextLine();
			System.out.println(ms);
			if (ms.equals("종료")) {
				System.out.println("프로그램 종료");
				run = false;
			}
		}
		// 프로그램을 종료하는 키워드인 종료가 절대로 바뀌지 않을 경우
		final String end2 = "종료";
		do {
			System.out.print(">");
			System.out.print(">");
			ms = scan.nextLine();
			System.out.println(end);
			if (ms.equals(ANSWERC)) {
				run = false;
			}
		} while (run);

		scan.close();

정수 여러 개 입력 후 0을 입력하면 종료 후 합계 평균 횟수 구하기

		/*
		 * 정수를 입력하고 마지막에 0을 입력하세요 :
		 * 
		 * 입력한 갯수는 합은 평균은 0을 입력하면
		 */
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int num1 = 0, i = 0, result = 0;
		boolean run = true;

		bw.write("숫자를 입력하고 마지막에 0을 입력하세요 : \n");
		bw.flush();
		while (run) {
			num1 = Integer.parseInt(br.readLine());
//			bw.write(String.valueOf(num1));
//			bw.flush();

			if (num1 != 0) {
				result += num1;
				i++;
			} else {
				run = false;
				double avg = result / i;
				double avg1 = (double)result / i; // 평균을 구할 때 소수점까지 구하려고 하면 
				bw.write("입력한 갯수는 " + i + "개 \n");
				bw.write("합은 " + result + "입니다. \n");
				bw.write("평균은 " + (result / i) + "입니다. \n");
				bw.write("평균은1 " + avg + "입니다. \n");
				bw.write("평균은2 " + avg1 + "입니다. \n");
			}
		}
		bw.flush();

		bw.close();
		br.close();

1-2+3-4+5-6+7-8+~~으로 합계가 100일 때 횟수 구하기

		/*
		 * 1- 2+3-4~~~100
		 * 
		 */
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int num1 = 1, test = 0, result = 0, i = 0;
		boolean run = true;

		test = Integer.parseInt(br.readLine());
		while (run) {
			if (num1 % 2 != 0) {
				result += num1;
				i++;
				num1 +=1;
				bw.write(String.valueOf(result)+"\n");
				bw.write(String.valueOf(i)+"\n");
				bw.flush();
			} else {
				result -= num1;
				i++;
				num1 +=1;
				bw.write(String.valueOf(result)+"\n");
				bw.write(String.valueOf(i)+"\n");
				bw.flush();
			}
			if (result == test) {
				run = false;
				bw.write("합계가 " + test + "를 넘었을때 숫자는 " + i + "입니다");
			}
		}
		bw.flush();

		bw.close();
		br.close();

이거는 강사님이 하신거

		/*
		 * 1- 2+3-4~~~100
		 * 
		 */
		int sum=0;
		int num=0;
		int count=1;
		int s=1;
		boolean run = true;
		while (run) {
			sum += num;
			if (sum >= 100) {
				run=false;
				
			}else {
				num = s *count;
				s= -s;
				count++;
			}
		}
		System.out.println("숫자: "+num);
		System.out.println("합계: "+sum);

Up&Down

		/*
		 * Up&Down 만들기 1~100 까지 랜덤 숫자 큰수 작은수 나누고 맞추면 맞췄습니다 시도 횟수는
		 * 
		 */
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int start = 0, num = 0, i = 0; // start : 시작 숫자 num : 내가 쓸 숫자 i는 횟수
		boolean run = true; // while 조작
		start = (int) ((Math.random() * 100) + 1); // 1~100 랜덤

		bw.write(String.valueOf(start) + "\n");
		bw.flush();
		while (run) {
			num = Integer.parseInt(br.readLine());
			bw.write(String.valueOf(num) + "\n");
			bw.flush();
			i++;
			if (num >= 1 && num <= 100) {
				if (num == start) {
					bw.write("맞췄습니다. \n");
					bw.write("시도 횟수는 " + i + "입니다.");
					run = false;
				} else if (num > start) {
					bw.write("더 작은 수를 입력하세요 \n");
					bw.flush();
				} else if (num < start) {
					bw.write("더 큰 수를 입력하세요 \n");
					bw.flush();
				}
			} else {
				bw.write("입력 범위를 벗어났습니다. \n");
				bw.write("다시 입력하세요. \n");
				bw.flush();
			}
		}
		bw.flush();

		bw.close();
		br.close();

오늘은 계속 복습 실습을 위주로해서 조금 아쉽지만 내일 배열 배운다고 하니 이제 내일부터 다시 백준알고리즘 할 수 있을 듯!

profile
코딩도전기

0개의 댓글