조건문
1. if
2. switch
if
[형식]
① if(조건) 참;
② if(조건) 참;
else 거짓;
③ 다중 if
if(조건) 참;
else if (조건) 참;
else if (조건) 참;
else if (조건) 참;
else 거짓;
ex)
if(조건) A;
B;
참: A -> B
거짓: B
if(조건) A; B;
C;
참: A -> B -> C
거짓: B -> C
if(조건) A;
else B;
C;
참: A -> C
거짓: B -> C
if(조건) A; B;
else C;
참:
거짓: error
if(조건) {A; B;}
else C;
참: A -> B
거짓: C
if(조건)
if(조건) A; 여기까지가 한 문장
else B; 얘는 위에꺼랑 세트 (탭 지켜주기)
C;
조건이 거짓이면 C
[문제]
입력한 값이 대문자(A(65)~ Z()이면 소문자로 바꿔서 출력하고,
소문자이면 대문자로 바꿔서 출력하고,
그 외는 문자로 출력한다.
[실행결과]
데이터 입력 : 66
B → b
데이터 입력 : 98
b → B
데이터 입력 : 45
-
If01.java
package if_;
import java.util.Scanner;
public class If01 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("데이터 입력 : ");
int a = scan.nextInt();
if(a >= 50) System.out.println(a + "는 50보다 크거나 같다");
System.out.println(a + "는 50보다 작다");
System.out.println();
/*
if(a >= 50) System.out.println(a + "는 50보다 크거나 같다");
System.out.println(a + "는 50보다 작다");
System.out.println();
//A - C
if(true)
if(true) System.out.println("A");
else System.out.println("B");
System.out.println("C");
System.out.println();
//B-C
if(true)
if(false) System.out.println("A");
else System.out.println("B");
System.out.println("C");
System.out.println();
//C
if(false)
if(false) System.out.println("A");
else System.out.println("B");
System.out.println("C");
System.out.println();
*/
if(a>='A' && a<='Z')
System.out.println((char)a+ " → " + (char)(a+32));
else if(a>='a' && a<='z')
System.out.println((char)a+ " → " + (char)(a-32));
else
System.out.println((char)a);
}
}
데이터 입력 : 66
B → b
데이터 입력 : 98
b → B
데이터 입력 : 45
-
[문제]
3과목(a,b,c)의 점수를 입력받아서 합격인지 불합격인지 출력하시오
합격은 평균이 60점 이상이어야 하고 각 과목이 40점 이상이어야 한다
[실행결과]
a의 값 : 98
b의 값 : 90
c의 값 : 85
합격
a의 값 : 98
b의 값 : 90
c의 값 : 35
과락으로 불합격
a의 값 : 68
b의 값 : 50
c의 값 : 45
불합격
If02.java
package if_;
import java.util.Scanner;
public class If02 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("a의 값 : ");
int a = scan.nextInt();
System.out.print("b의 값 : ");
int b = scan.nextInt();
System.out.print("c의 값 : ");
int c = scan.nextInt();
double avg = (a+b+c) / 3;
if (avg >=60)
if (a >= 40 && b >= 40 && c >=40 )
System.out.println("합격");
else
System.out.println("과락으로 불합격");
else
System.out.println("불합격");
}
}
a의 값 : 98
b의 값 : 90
c의 값 : 85
합격
a의 값 : 98
b의 값 : 90
c의 값 : 35
과락으로 불합격
a의 값 : 68
b의 값 : 50
c의 값 : 45
불합격
Input.java
package if_;
import java.io.IOException;
public class Input {
public static void main(String[] args) throws IOException { //자동차 보험 드는거 사고날거 대비하는거
System.out.print("문자 입력 : ");
int a = System.in.read(); //실행 아직 안 함. 컴파일할 때 나는 리셉션 예방, 보험처리
// 1개 문자 입력
System.in.read();
System.in.read(); //이 두 개가 엔터 읽어주는 역할 / 읽고 끝냄 저장x / 엔터 처리
//버퍼 지우는 flush
System.out.print("문자 입력 : ");
int b = System.in.read();
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
문자 입력 : a
문자 입력 : v
a = 97
b = 118
[문제] 성적 계산
이름이 L(name)이고 국어점수 85(kor), 영어점수 90(eng), 수학점수 100(math)일때 총점(tot)과 평균(avg)을 구하시오
총점(tot), 평균(avg), 학점(grade)을 구하시오.
[조건]
총점 = 국어 + 영어 + 수학
평균 = 총점 / 과목수
학점은 평균이 90이상이면 A
평균이 80이상이면 B
평균이 70이상이면 C
평균이 60이상이면 D
그외는 F
평균의 소수이하 3째자리까지 출력
[실행결과]
*** L 성적표 ***
국어 영어 수학 총점 평균 학점
85 90 100 xxx xx.xxx B
Sungjuk.java (학점 if문 이용)
package if_;
public class Sungjuk {
public static void main(String[] args) {
char name = 'L';
int kor = 85;
int eng = 90;
int math = 100;
int tot;
char grade;
tot = kor + eng + math;
double avg = (double)tot / 3;
//String avg = String.format("%.3f", (double)tot / 3);
if (avg >= 90)
grade = 'A';
else if (avg >=80)
grade = 'B';
else if (avg >= 70)
grade = 'C';
else if (avg >= 60)
grade = 'D';
else
grade = 'F';
System.out.println("\t*** " + name + "성적표 ***");
System.out.println("국어\t영어\t수학\t총점\t평균\t학점");
// System.out.println(kor + " \t" + eng + "\t" + math + "\t" + tot + "\t" + String.format("%.3f", avg));
System.out.println(kor + " \t"
+ eng + "\t"
+ math + "\t"
+ tot + "\t"
+ String.format("%.3f", avg) + "\t"
+ grade);
}
}
*** L성적표 ***
국어 영어 수학 총점 평균 학점
85 90 100 275 91.667 A
switch
- 실수형 변수를 사용할 수 없다. double a = 2.8;
switch((int)a) - //2
String.format("%.0f", a); //3
[형식]
switch(변수 또는 문자열 또는 식) {
case 값1: break;
case 값2: break;
case 값3: break;
default:
}
if(a==1) A;
else if(a==2) B;
else id(a==3) C;
else D;
E;
switch (a){
case 1: A;
case 2: B;
case 3: C;
default: D;
Sungjuk.java (학점 switch문 이용)
package switch_;
public class Sungjuk {
public static void main(String[] args) {
char name = 'L';
int kor = 85;
int eng = 90;
int math = 100;
int tot;
char grade;
tot = kor + eng + math;
double avg = (double)tot / 3;
//String avg = String.format("%.3f", (double)tot / 3);
switch((int)avg / 10) {
case 10: //★★★★★
case 9:
grade = 'A';
break;
case 8:
grade = 'B';
break;
case 7:
grade = 'C';
break;
case 6:
grade = 'D';
break;
default:
grade = 'F';
break;
}
System.out.println("\t*** " + name + "성적표 ***");
System.out.println("국어\t영어\t수학\t총점\t평균\t학점");
// System.out.println(kor + " \t" + eng + "\t" + math + "\t" + tot + "\t" + String.format("%.3f", avg));
System.out.println(kor + " \t"
+ eng + "\t"
+ math + "\t"
+ tot + "\t"
+ String.format("%.3f", avg) + "\t"
+ grade);
}
}
Switch01.java
package switch_;
import java.util.Scanner;
public class Switch01 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("월 입력 : ");
int month = scan.nextInt();
int days = 0;
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 2:
days = 28;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
}
System.out.println(month + "월은 " + days + "일 입니다.");
}
}
월 입력 : 5
5월은 31일 입니다.
월 입력 : 2
2월은 28일 입니다.
Exception (예외처리)
- 컴파일 : 예방
ex) 자동차 보험
- 실행 : 개발자 잘못 -> 고치면 됨.
메모리 <------ 버퍼(임시메모리) <------- 화면
a 엔터 데이터 입력 : a 엔터
a - a 데이터입력 : <-이건 무시하고 엔터 값이 b로
b - 13
데이터 입력: a b 엔터
a b 엔터
a - 97 버퍼 지우기 = flush
b - 98
Enter 기능 (두 가지 기능 합쳐진거) -> 엔터는 flush를 두 번해야함.
1. 맨 앞으로 가라 \r
2. 다음줄로 떨어져라 \n
System.in.read();
System.in.read();
[문제]
2개의 정수형 숫자와 연산자(+,-,*,/)를 입력하여 계산하시오
단, 정수형 숫자는 Scanner를 사용하고, 연산자는 System.in.read()를 사용하여 입력하시오
[실행결과]
a의 값 : 25
b의 값 : 36
연산자(+,-,*,/)를 입력 : +
25 + 36 = xx
a의 값 : 25
b의 값 : 36
연산자(+,-,*,/)를 입력 : /
25 / 36 = 0.6944444444444444
a의 값 : 25
b의 값 : 36
연산자(+,-,*,/)를 입력 : #
연산자 error
Switch02.java
package switch_;
import java.io.IOException;
import java.util.Scanner;
public class Switch02 {
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(System.in);
System.out.print("a의 값 : ");
int a = scan.nextInt();
System.out.print("b의 값 : ");
int b = scan.nextInt();
System.out.print("연산자(+,-,*,/)를 입력 : ");
int op = System.in.read();
switch (op) {
case '+':
System.out.println(a+ " + " + b + " = " + (a+b));
break;
case '-':
System.out.println(a+ " - " + b + " = " + (a-b));
break;
case '*':
System.out.println(a+ " * " + b + " = " + (a*b));
break;
case '/':
System.out.println(a+ " / " + b + " = " + (a/b));
break;
default:
System.out.println("연산자 error");
}
}
}
a의 값 : 25
b의 값 : 36
연산자(+,-,*,/)를 입력 : +
25 + 36 = 61
'JAVA' 카테고리의 다른 글
DAY 2 (0) | 2024.08.13 |
---|---|
DAY 3-1 연산 (2024.07.05) (0) | 2024.08.13 |
DAY 4 - 반복문 (2024.07.08) (0) | 2024.08.13 |
DAY 5 - 배열 / 선택정렬 / 버블정렬 (2024.07.09) (0) | 2024.08.13 |
DAY 6 - 다차원 배열 (2024.07.10) (0) | 2024.08.13 |