자바 3일차

선장원·2021년 10월 5일

자바

목록 보기
3/24

3일차 (10/05)

논리 연산자

종류 : AND연산(&&),OR연산(||), NOT연산(!)

  • a && b
  • a, b자리에 올 수 있는 요소는 boolean 타입 변수 (true, false)로 결과가 리턴되는 연산식(비교 연산식)

AND

  • a와 b가 모두 true라면 결과는 true
  • a와 b 중 하나라도 false가 잇으면 결과는 false

OR

  • a와 b 가 모두 false라면 결과는 false
  • a와 b 중 하나라도 true가 있으면 결과는 true

NOT

  • 반전시키는 역할
  • 기존에 있는 값이 true라면 결과는 false
  • 기존에 있는 값이 false라면 결과는 true

실습

		// 논리 연산자
		System.out.println("&&");
		boolean result = true && true;
		System.out.println(result);
		result = true && false;
		System.out.println(result);
		result = false && true;
		System.out.println(result);
		result = false && false;
		System.out.println(result);
		
		System.out.println("||");
		boolean result1 = true || true; //or 연산 중에 앞에서 true가 나와서 뒤에꺼는 필요 없으니 dead cord라고 뜨나
		System.out.println(result1);
		result1 = true || false;
		System.out.println(result1);
		result1 = false || true;
		System.out.println(result1);
		result1 = false || false;
		System.out.println(result1);
		
		
		System.out.println("!");
		boolean var1 = false;
		System.out.println(var1); // false
		System.out.println(!var1); // true
		var1 = ! var1;
		System.out.println(var1); // true
		
		System.out.println(7>5); // true
		System.out.println(!(7>5)); // false

사용실습

		// 영어, 수학 점수가 둘 다 90점 이상이면 합격(true)
		int engscore = 95;
		int matscore = 97;
		
		boolean result2 = false;
		result2 = engscore >= 90 && matscore >= 90; // true and true = true
		System.out.println("합불" + (result2));
		
		engscore = 80;
		matscore = 97;
		
		result2 = engscore >= 90 && matscore >= 90; // false and true = false
		System.out.println("합불2" + (result2));
        		// 회원가입을 할 때 id = myid, password = 1234 라고 가입하고
		// 나중에 로그인을 한다고 했을 때 id, pw를 모두 맞게 입력하면 로그인 성공(true)
		// 둘 중 하나라도 틀린 값을 입력했다면 로그인 실패(false) 처리를 한다고 했을 때
		
		String id = "myid";
		String pw = "1234";
		
		boolean loginresult = (id == "myid") && (pw == "1234"); // true and true = true
		System.out.println("로그인" + (loginresult));
		
		id = "idididid";
		loginresult = (id == "myid") && (pw == "1234"); // false and true = false
		System.out.println("로그인" + (loginresult));

증감 연산자

종류 : ++, --
변수 앞 또는 변수 뒤에 위치 할 수 있음

  • 앞이냐 뒤냐에 따라서 계산 결과가 달라짐.
    ++이 붙으면 무조건 1씩 증가
    --이 붙으면 무조건 1씩 감소

++var : var이 가지고 있는 값에 1을 증가시킨 뒤 전체 연산에 사용함
var++ : var이 가지고 있는 값을 전체 연산에 사용한 뒤 var의 값을 1 증가시킴

result = 10 + var++;
result = 10 + ++var;

반복문같은 곳에 많이 사용 된다고한다.
이것도 뭔가 이상하게 복잡하게 만드네

실습

		// 증감 연산자
		int result = 0, var = 10;
		
		
		System.out.println("result1 : " + result + "  var : " + var);
		result = 10 + var++;
		System.out.println("result2 : " + result + "  var : " + var);
		result = 10 + var++;
		System.out.println("result3 : " + result + "  var : " + var); // r : 21 v : 12
		
		
		result = 0;
		var = 10;
		result = 10 + var--;
		System.out.println("result4 : " + result + "  var : " + var);
		result = 10 + var--;
		System.out.println("result5 : " + result + "  var : " + var);
		
		result = 0;
		var = 10;
		result = 10 + ++var;
		System.out.println("result6 : " + result + "  var : " + var); // r : 21 v : 11
		result = 10 + ++var;
		System.out.println("result7 : " + result + "  var : " + var); // r : 22 v : 12
		
		
		result = 0;
		var = 10;
		result = 10 + --var;
		System.out.println("result8 : " + result + "  var : " + var); // r : 19 v : 9
		result = 10 + --var;
		System.out.println("result9 : " + result + "  var : " + var); // r : 18 v : 8

스캐너

스캐너 객체를 선언해야 활용가능
파이썬의 input과 같은 사용

Scanner scan = new Scanner(System.in);
위 문장의 의미는 스캐너 객체를 선언한다.

우변

  • new : 새로운 객체 (인스턴트)선언 (키워드)
  • 나머지 스캐너 클래스 생성자 (생성자 : 객체 생성양식) : 생성자랑 객체만 기억해도 된다고 하심 아직 생성자 객체에 관한 것을 안배워서 그런가
  • 가로 안 : 매개변수
  • System.in : 사람의 의해서 시스템에게 주는 것
  • System.out : 시스템에 의해서 사람에게 주는 것

오류를 눌른 후 import ‘Sanner’ (java.util)를 누르면

클래스 이름 위 쪽에 import java.util.Scanner; 가 생김

아니면 클래스 이름 위에 import java.util.Scanner;를 친다.

  • nextInt(); : 정수를 입력
  • next(); : 띄어쓰기 또는 엔터 전까지 입력한 내용을 저장
  • nextLine(); : 엔터 전까지 입력한 모든 내용을 저장

제어문

  • 어떤 상황(조건)에 따라 프로그램 실행을 제어(조건문, 반복문)하는 문장

if문

  • if
  • if ~ else
  • if ~ else if ~ else
  • if ~ else if ~~~else
  • if (조건식)
  1. 조건식은 boolean타입만 쓸 수 있음
  2. else if (조건식) 가능
  3. else는 조건식을 쓰지 못함

if (조건식){
조건이 true일 때 실행하는 부분
} else {
w조건이 false일 때 실행하는 부분
}

if(조건식1) {
조건식1이 true일 때 실행
} else if(조건식2) {
조건식2가 true일 때 실행
} else if(조건식3) {
조건식3이 true일 때 싱행
} else {
조건식 123 모두 해당되지 않을 때 실행
}

if문 실습

		// if 연습
		boolean con = false;
		System.out.println("if문 실행 전");
		// 단일 if문
		if (con) { // con이라는 변수가 true일 때만 실행
			System.out.println("if문 내부");
		}
		System.out.println("if문 실행 후");

		// if else문
		if (con) {
			System.out.println("조건이 true");
		} else {
			System.out.println("조건이 false");
		}

		// 스캐너로 정수를 입력받아 입력 받은 정수가 양수인지 음수인지 출력해보세요
		// 일단 0도 양수라고 판단
		// 0은 0입니다
		int num1 = 0;
		System.out.print("숫자를 입력하세요1 : ");
		num1 = scan.nextInt();

		if (num1 == 0) {
			System.out.println("0입니다");
		} else if (num1 > 0) {
			System.out.println("양수");
		} else {
			System.out.println("음수");
		}

		// 정수를 입력 받아서 홀수, 짝수를 판단해보세요
		// 음수일 때?
		// 0 보다 큰 숫자에 대해서만 홀/짝 판단을 하고 0이라의 숫자는 다시 입력하라는 내용을 출력
		int num2 = 0;
		System.out.print("숫자를 입력하세요2 : ");
		num2 = scan.nextInt();

		if (num2 % 2 == 0) {
			System.out.println("짝수");
		} else {
			System.out.println("홀수");
		}

중첩 if 문

if문 안에 if문을 하나 더 만들어서 더 자세하게 만드는 if문

  • 비교연산신을 사용해서 합쳐서 만들 수도 있다.
    if 양수판단
    if 홀짝판단
    else
    else
		// 중첩 if문
		if (num2 > 0) { // 양수/음수 판정
			if (num2 % 2 == 0) { // 홀/짝 판정
				System.out.println("짝수");
			} else {
				System.out.println("홀수");
			}
		} else {
			System.out.println("다시 입력하세요. ");
		}

		// 위에 작성한 중첩 if 문을 && 연산을 이용하여 if else if 로 표현
		if (num2 > 0 && num2 % 2 == 0) {
			// num이 0보다 크고 num이 짝수
			System.out.println("짝수");
		} else if (num2 > 0 && num2 % 2 != 0) {
			// num이 0보다 크고 num이 홀수
			System.out.println("홀수");
		} else {
			// num이 0보다 작너나 같다
			System.out.println("0보다 큰 숫자를 입력하세요.");
		}

수업 꿀팁

컨트롤 쉬프트 f 자동 줄 정리

알트 + 위아래 화살표 = 줄 이동

print() : ()안에 있는 내용을 출력하고 줄은 그대로
println() : ()안에 있는 내용을 출력하고 줄을 바꿈

예외 오류
InputMismatchException
타입 미스매치
맨 밑에 줄에 예외가 발생한 위치


The left-hand side of an assignment must be a variable
좌변 : left hand
우변 : right hand

혼자 심심할 때

백준 알고리즘
https://www.acmicpc.net/
프로그래머스
https://programmers.co.kr/

장원이의 홀짝게임(java)

쉬는 시간 틈틈히 만든 홀짝게임
자바랑 파이썬이랑 달라서 좀 헷갈렸던 느낌?

package day02_20211005;

import java.util.Random;
import java.util.Scanner;

public class Ex00_Game {

	public static void main(String[] args) {
		// 장원이가 만든 홀짝 게임!!
		Random rd = new Random(); // 랜덤 객체
		Scanner scan = new Scanner(System.in); // 스캐너 객체
		
		int var1 = 0; // 내가 입력할 숫자
		System.out.print("숫자 : ");
		var1 = scan.nextInt();
		
		
		if (var1 % 2 == 0) {
			var1 = 0; // 0은 짝수
			System.out.println("짝");
		} else {
			var1 = 1; //1은 홀수
			System.out.println("홀");
		}
		
		
		int num1 = 0;
		num1 = rd.nextInt(100); //0~100까지중에 랜덤으로 뽑아주는 메서드
		System.out.println(num1);
		
		int var2 = 0;
		if (num1 % 2 == 0) {
		System.out.println("짝");
		var2 = 0;
		} else {
			System.out.println("홀");
			var2 = 1;
			
		}
		
		if (var1 == var2) {
			System.out.println("정답");
		} else {
			System.out.println("오답");
		}
		
	}

}
profile
코딩도전기

0개의 댓글