728x90
728x90
* 이 글은 제가 공부하기 위해 최대한 사실에 입각해 내용을 적으려고 하지만 일부 내용들이 정확하지 않을 수 있습니다.
혹시나 잘못된 부분이 있으면 너그럽게 이해해주시고 피드백 부탁드려요!
2023.01.10 - [공부/풀스택 과정] - JAVA Chapter 4장 연산
이어서
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
'Full Stack > JAVA' 카테고리의 다른 글
[풀스택과정] JAVA 연습문제/코딩테스트(연산자, 제어문, 배열) (1) | 2023.01.14 |
---|---|
[풀스택과정] JAVA 6장 배열, 7장 클래스(1) (0) | 2023.01.13 |
[풀스택과정] JAVA 6장 배열 (0) | 2023.01.12 |
[풀스택과정] JAVA 4장 연산 (0) | 2023.01.10 |
[풀스택과정] JAVA 1장 자바기초 2장 자바설치 3장 변수와 자료형 (0) | 2023.01.09 |