728x90
728x90

* 이 글은 제가 공부하기 위해 최대한 사실에 입각해 내용을 적으려고 하지만 일부 내용들이 정확하지 않을 수 있습니다.

   혹시나 잘못된 부분이 있으면 너그럽게 이해해주시고 피드백 부탁드려요!

 


2023.01.10 - [공부/풀스택 과정] - JAVA Chapter 4장 연산

 

[풀스택과정] JAVA 4장 연산

* 이 글은 제가 공부하기 위해 최대한 사실에 입각해 내용을 적으려고 하지만 일부 내용들이 정확하지 않을 수 있습니다. 혹시나 잘못된 부분이 있으면 너그럽게 이해해주시고 피드백 부탁드려

cloudjini.tistory.com


이어서

4.7 삼항연산

조건식 ? 값1(연산식) : 값2(연산식)

if문을 이용한 조건문과 동일한 역할

 

삼항연산은 if문과 비교했을 때 계산이 느림
그래서 if 문을 쓸 수 있으면 삼항연산을 굳이 쓰지는 않음


조건식이 참(true)이면 값1 또는 연산식이 실행되며, 그렇지 않으면(false) 값2가 실행된다.
(비교연산, 논리연산의 결과는 불린 타입, 참,거짓이 나오기 때문)

package chapter04;

public class OpEx7 {
	
	public static void main(String[] args) {
		
		int score = 59;
		String pass = score >= 60 ? "합격" : "불합격";
		System.out.println(pass);
		
		// 짝수, 홀수
		String result = score % 2 == 0 ? "짝수" : "홀수"; 
		System.out.println(result);
		// 
		// 짝수는 2로 나누었을 때 나머지가 0이어야함
		// 홀수는 2로 나누었을 때 나머지가 1이어야함
		// 3의 배수는 3로 나누었을 때 나머지가 0이어야함
		// 3,6,9게임은 일의 자리를 가지고 와야함(10으로 나누기)
		// 1. 일의 자리 숫자?
		int tmp = score % 10;
		System.out.println(tmp);
		// 2. 3의 배수 이면서 0이 아니어야함
		result = tmp % 3 == 0 && tmp > 0 ? "박수" : "조용!";
//		result = tmp % 3 == 0 && tmp != 0 ? "박수" : "조용!";
		// 위의 방법은 선생님의 풀이과정
		System.out.println(result);
		
	}
}

4.8 문자열연산

package chapter04;

public class OpEx8 {
	public static void main(String[] args) {
		
		String name = "홍길동";
		System.out.println("안녕하세요 " + name + " 입니다.");
		
		int height = 180;
		System.out.println("저의 키는 " + height + " cm입니다.");
		
		// String weight = 75.5; // 에러발생(문자 자료형 변수에는 숫자 대입 못함)
		String weight = 75.5 + "";
		System.out.println("제 몸무게는 " + weight + " kg입니다.");
		// 숫자만을 쓰겠다고 스트링 타입에 빈문자열을 합쳐서 쓰는 경우가 굳이 있는지?
		// 되게 많이 씀(파싱?)
		
		int ageInt = 30; // 정수
		String ageStr = "30"; // 문자열
		
		String str = 7 + 7 + "7"; // 결과 : 147
		String str2 = "7" + 7 + 7; // 결과 : 777
		System.out.println(str);
		System.out.println(str2);
	}
}

4.9 연산자 우선순위

괄호 >> 증감, 부호, 비트, 논리 >> 산술 >> 비교 >> 논리 >> 대입

4장 연습문제

package chapter04;

public class example {
	public static void main(String[] args) {
		
		// 7번
		int number = 1234;
		int result = number - (number % 100);
		System.out.println(result);
		// 다른 방법
		// int result = number / 100 * 100;
		// 
		
		// 버림문제 (소수점 통제가 가능해야함)
		double d = 1.12345678;
//		double result2 = d - (d % 0.0001);  // 내 방법
		double result2 = (int)(d * 1000) / 1000d; // 선생님 방법 
		System.out.println(result2);
		// 차후 반올림이라던지 생각할 수 있는 문제가 있음
		
		
		// 6번
		int price = 187000;  // 자리수 _ 사용 가능 187_000 십팔만칠천이라 인식
		int oman = price / 50000;
		int ilman = (price - (50000 * oman)) / 10000;
		// int ilman = price % 50000 / 10000;
		int ochun = (price - (50000 * oman) - (10000 * ilman)) / 5000;
		// int ochun = price % 10000 / 5000;
		int ilchun = (price - (50000 * oman) - (10000 * ilman) - (5000 * ochun)) / 1000;
		// int ilchun = price % 5000 / 1000;
				
		
		System.out.println("5만원권 : "+oman+"장");
		System.out.println("1만원권 : "+ilman+"장");
		System.out.println("5천원권 : "+ochun+"장");
		System.out.println("1천원권 : "+ilchun+"장");
		
		// 5번
		int year = 2024;
		
		boolean leapyear = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
		
		System.out.println(leapyear);
		
		// 4번
		int age = 10;
		int height = 180;
		boolean parent = false;
		boolean hearchDease = false;
		
		boolean result1 = (age >= 6 || parent) && height >= 120 && !hearchDease;
		System.out.println(result1);
		
		
		// 축약어
	}
}

5장 제어문

5.1 프로그램의 실행제어

제어문은 조건문과 반복문

조건문 : if문, switch문

반복문 : for문, while문, do~while문

 

5. 2 제어문

5.2.1 if문

package chapter05;

public class IfEx {
	public static void main(String[] args) {
		
		int score = 59;
		
		System.out.println("시험 시작");
		
//		if (score >= 60) {
//			System.out.println("합격입니다.");
//		}
		if (score >= 60) System.out.println("합격입니다.");
		 // 차라리 위처럼 해야 가독성을 높임
		 // score가 60보다 작으면 "불합격입니다" 출력
		else 
			System.out.println("불합격입니다.");
		
		//문장이 하나라면 블럭을 삭제해도 실행 가능
		System.out.println("시험 끝");
	}
}

else는 종속 사용(반드시 if가 있어야만 사용 가능)

package chapter05;

public class IfEx2 {
	public static void main(String[] args) {
		
		int score = 95;
		String grade = "";
		
		System.out.println("학점부여 시작");
		if (score >= 95) {
			grade = "A+";
		} else if (score >=90) {
			grade = "A";
		} else if (score >=85) {
			grade = "B+";
		} else if (score >=80) {
			grade = "B";
		} else if (score >=70) {
			grade = "C";
		} else if (score >=60) {
			grade = "D";
		} else {
			grade = "F";
		}
		System.out.println("당신의 학점은 "+grade+"입니다.");
		System.out.println("학점부여 끝");
	}
}

5.2.2 중첩 if문

package chapter05;

public class IfEx3 {
	public static void main(String[] args) {
		
		int math = 90;
		int eng = 95;
		
		if (math >= 60) {
			if (eng >= 60) {
				System.out.println("통과");
			}
		// if (math >= 60 && eng >= 60) {	
		// if (!(math < 60 || eng < 60)) {  // 드모르간의 법칙 성립
		// (대우 - 전체부정의 조건도 부정)
		} else {
			System.out.println("탈락");
		}
	}
}

논리 연산자 &&를 사용하면 if문 하나를 줄일 수 있음 => 가독성↑

5.2.3 switch문

package chapter05;

public class SwitchEx {
	public static void main(String[] args) {

		int number = 3;
		
		switch (number) {
			case 1:
				System.out.println("1번");
//				break;
			case 2:
				System.out.println("2번");
//				break;
			case 3:
				System.out.println("3번");
//				break;
			case 4:
				System.out.println("4번");
//				break;
			case 5:
				System.out.println("5번");
//				break;				
			default :
				System.out.println("6번");
		// break가 없으면 3번 이후 전체 출력		
		}
	}
}
package chapter05;

import java.util.Scanner;

public class SwitchEx1 {
	public static void main(String[] args) {
		System.out.println("점수를 입력하세요.");
		Scanner scanner = new Scanner(System.in);
		
		int score = scanner.nextInt();
		String grade = "";
		switch (score / 10 ) {
			case 9 :
				grade = "A";
				break;
			case 8 :
				grade = "B";
				break;
			case 7 :
				grade = "C";
				break;
			case 6 :
				grade = "D";
				break;
			default :
				grade = "F";
			
		}
		System.out.println("학점 :"+grade);
		scanner.close();
	}
}
package chapter05;

import java.util.Scanner;

public class SwitchEx2 {
	public static void main(String[] args) {
		System.out.println(" 월을 입력하세요.");
		Scanner scanner = new Scanner(System.in);
		
		int score = scanner.nextInt();  // nextInt 가 입력대기 상태
		String grade = "";
		
		switch (score) {
		// 숫자를 입력받고
		// 해당 숫자를 일치하는 계절을 출력
		
			case 3 : case 4 : case 5 :
				grade = "봄";
				break;
			case 6 : case 7 : case 8 :
				grade = "여름";
				break;
			case 9 : case 10 : case 11 :
				grade = "가을";
				break;
			case 12 : case 1 : case 2 :
				grade = "겨울";
				break;
			default :
				grade = "1~12의 사이 숫자를 입력하세요";
			
		}
		System.out.println("계절 :"+grade);
		scanner.close(); // 닫아주는 것, 종료
	}
}

5.3 반복문

5.3.1 for문

for (초기화식 ; 조건식 ; 증감식) {
         실행문; // 조건식이 true인 경우에만 실행
}

 

package chapter05;

public class ForEx {
	public static void main(String[] args) {

		int sum = 0;
		for (int i = 0; i<10; i++) {
			System.out.println("i = "+i);
			sum += i + 1;
			System.out.println(sum);
		}
		System.out.println(sum);
	}
}

/*
package chapter05;

public class ForEx {
	public static void main(String[] args) {

		int sum = 0;
		int i = 0;
		for (; i<10; ) {   // 조건식을 없애도 되지만 무한루프에 빠질수도 있음
			System.out.println("i = "+i);
			sum += i + 1;
			System.out.println(sum);
			i++;
		}
		System.out.println(sum);
	}
}
*/

초기화식, 조건식, 증감식이 없어도 작동은 한다.

package chapter05;

public class ForEx2 {
	public static void main(String[] args) {
		for(int i=0; i<5; i++) {
			System.out.println(i + " " + (9-i) + " " + i / 3 + " " + i % 3);
				// 지연 순환
			}

	}
}

5.3.2 while문

while (조건식) {
      실행문; // 조건식이 true인 경우에만 실행
}
package chapter05;

public class WhileEx {
	public static void main(String[] args) {
		
		int sum =0;
		int i = 1;
		
		while (i <= 100) {
			sum += i;
			System.out.printf("i : %3d, sum : %4d\n", i, sum);
			// printf ( format 형식에 맞추는것, 개행없음)
			// println ( ln 개행이 붙어있는 것)
			// format
			// 지시자
			// %d(숫자) %s(string문자) %c(char문자) %n(개행)
			// %d decimal , 정수
			// %x 십진수
			// %f float(실수)
			i++;
			
			// sum += i++; 가능
			// sum += ++i; 불가능 (2 ... + 11 계산식)
			
			
		}
		
		System.out.println("합계 : " +sum);
		System.out.println('Z' - 'A' + 1);
		System.out.println('힣' - '가' + 1);
		System.out.println((int)'ㄱ');
		String k = "a";
		char l = 'a';
		System.out.printf("차이 : %s, %c", k, l);
	}
}

5.3.3 do~while문

do {
      실행문;  // 처음 실행문은 한번 실행되고 조건식을 확인해서 true이면 반복
} while (조건식);

 

5.3.4 중첩반복문

 

중첩 반복문을 배운다는 사람 중에 모르는 사람이 없을 GuguClass

 

package chapter05;

public class Gugu2Dan {
	public static void main(String[] args) {
		
//		for ( int i=1; i<10; i++) {
//			System.out.println("2 * "+ i + " = "+ 2*i);
//							
//		}
		
		// while문으로 변환
		
		int i = 1;
		while ( i < 10) {
			System.out.println("2 * " + i + " = " + 2 * i);
			i++;
		}
		
	}
}

 

package chapter05;

public class Gugu {
	public static void main(String[] args) {
		
		for (int j=2; j<10; j++) {
			System.out.println("["+j+"단]");
			for (int i =1; i<10; i++) {
				System.out.println(j + " * "+ i + " = "+ j*i);
			}
			System.out.println("=============================");
		}
		
//		int i = 1;
//		int j = 2;
//		int result = 0;
//		
//		while (j <= 5) {
//			while (i <= 3) {
//				result = i * j;
//				System.out.println(j + "*" + i + " = " + result);
//				i++;
//		
//			}
//		j++;
//		}   // 위에 값은 i가 4가 되기 때문에 2단만 나옴
		//해결책은 두번째 while 문에 i = 1; 재설정
		
		
//		int j =2;
//		while (j <=9) {
//			int i =1;
//			while(i<=9) {
//				System.out.println(j + "*" + i + " = " + j*i);
//				i++;
//		}
//		j++;
//		}
		
		
	}
}

debug(F11 버튼) : 버그를 없애는 과정, 변화를 확인하는 과정, 반복문 때 특히 유용

라인넘버 위에 Toggle breakpoit 표시가 되면 해당 라인 디버그 과정을 확인할 수 있음.

728x90
300x250