[Java] 2020.10.27. day_5 제어문_if, if else, else if, switch~case, break
2020. 10. 27. 09:09ㆍWeb_Back-end/Java SE
◎ 제어문 : 프로그램의 순차적인 흐름을 변경하는 문장들
- 조건문(if, else, switch~case)
- if문 : 조건을 부여하고 조건이 맞을 때에만 코드를 실행해야할 때
- 단일 if, if~else, 다중 if 3가지 형태로 사용
- 단일 if : 조건이 맞을 경우에만 코드를 실행해야 할 때
- 문법
- if(조건) { 조건에 맞을 경우 실행되어야 할 코드들 }
- 다중 if문( else ~ if ) : 연관성있는 여러 조건을 비교해야할 때
- 문법
- if(조건식){조건에 맞을 때 수행할 문장들}
- else if(조건식){조건에 맞을 때 수행할 문장들}
- else if(조건식){조건에 맞을 때 수행할 문장들}
- ....(여기서 끝내도 됨)
- else{위의 모든 조건에 맞지 않을 때 수행할 문장들}
- switch~case : 일치하는 정수를 비교할 때 사용 Java SE 7 (JDK1.7)에서는 문자열도 비교가능
- 문법
- switch(변수명){ //변수명 안에 _ byte,short, int, char, String //long은 불가능
- case 상수 : 변수의 값이 상수와 같을 때 수행문장들;
- break;
- case 상수 : 변수의 값이 상수와 같을 때 수행문장들;
- break;
- default : 변수의 값에 해당하는 case가 없을 때 수행문장들;
- }
- break; ==> switch~case, for, while, do~while 문에서 실행을 멈추고 빠져 나갈 때 사용
▼ if문 사용 예 ▼
package day_1027;
/*
- 단일 if문 : 조건에 맞을 때에만 코드를 실행해야 할 때
if(조건식) {
조건에 맞을 때 수행될 문장들(한줄일 경우 {} 안써도 됨)
}
*/
class UseIf{
public static void main(String[] args){
int i = 0;
i = 27;
if(i<0){
//i의 절대값을 보여줌
i=-i;
System.out.println("음수가 입력되어 부호변경 수행");
}//end if
System.out.println("i는 " + i);
System.out.println("----------------------------");
System.out.println("감사합니다");
//문자열의 비교는 equals method를 사용하여 같은지만 비교할 수 있다
System.out.println(args[1].equals("java"));
System.out.println(args[2].equals("자바"));
}//main
}//class
▼ else if 사용 예 ▼_다중 if
package day_1027;
/*
다중 if
else ~ if
입력된 점수의 유효성 검증
0보다 작았을 때, 100보다 컸을 때, 0~100사이일 때의 비교처리
*/
class UseElseIf{
public static void main(String[] args){
int score = Integer.parseInt(args[0]);
// -1, 0~100, 101 경계값 테스트를 해줘야함
System.out.print(score + "점은 ");
if(score < 0){//0보다 작은경우
System.out.println("0보다 작아서 실패하였습니다.");
}
else if(score > 100){//100보다 큰 경우
System.out.println("100보다 커서 실패하였습니다.");
}
else{//0~100 사이인 경우(나머지)
System.out.println("유효점수");
}
//자격시험점수 score변수에 들어있다
//자격시험 점수의 판점
//과락 : 0~40
//다른과목점수 참조 : 41~60
//-1, 0~40(과락테스트), 41~60(다른과목참조 테스트), 61~100(정상합격 테스트), 101~(초과테스트)
if(score >= 0 && score <= 40){
System.out.println("과락");
}
else if(score > 40 && score < 61){
System.out.println("다른과목 참조");
}
else if(score > 60 && score < 101){
System.out.println("합격");
}
else{
System.out.println("잘못된 점수의 입력입니다.");
}
/* @혼자 푼거 -> 점수 2개 비교해서 과락, 합격 나누기
int score2 = Integer.parseInt(args[1]);
int score3 = Integer.parseInt(args[2]);
if(score2 > 40){
if(score3 > 40){
System.out.println("합격입니다");
}
else if(score3 <= 40){
System.out.println(score3 + "점인 과목이 과락입니다");
}
}
if(score3 > 40){
if(score2 > 40){
System.out.println("합격입니다");
}
else if(score2 <= 40){
System.out.println(score2 + "점인 과목이 과락입니다");
}
}
else{
System.out.println("잘못된 점수의 입력입니다.");
}
*/
//태어난 해를 두번째 arguments로 입력받아 띠를 구하는 다중 if문
//태어난 해를 12로 나눈 나머지는 0~12까지의 12개 수로 얻어진다
//각각의 수에 해당하는 띠는 아래와 같고 띠에대해 출력하는 코드
//0 : 원숭이, 1 : 닭, 2 : 개, 3 : 돼지, 4 : 쥐, 5 : 소
//6 : 호랑이, 7 : 토끼, 8 : 용, 9:뱀, 10:말, 11:양
int birth = Integer.parseInt(args[1]);
int result = birth%12;
System.out.print(birth + "년에 태어난 당신의 띠는 ");
if(result == 0){
System.out.print("원숭이");
}
else if(result == 1){
System.out.print("닭");
}
else if(result == 2){
System.out.print("개");
}
else if(result == 3){
System.out.print("돼지");
}
else if(result == 4){
System.out.print("쥐");
}
else if(result == 5){
System.out.print("소");
}
else if(result == 6){
System.out.print("호랑이");
}
else if(result == 7){
System.out.print("토끼");
}
else if(result == 8){
System.out.print("용");
}
else if(result == 9){
System.out.print("뱀");
}
else if(result == 10){
System.out.print("말");
}
else if(result == 11){
System.out.print("양");
}
System.out.println("띠입니다.");
}//main
}//class
▼ if else 사용 예 ▼
package day_1027;
/*
- if~else : 둘 중 하나의 코드가 반드시 실행되어야 할 때
if(조건식){
조건에 맞을 때 수행할 문장들
}
else{
조건에 맞지 않을 때 수행할 문장들
}
*/
class UseIfElse{
public static void main(String[] args) {
int num = Integer.parseInt(args[0]);
System.out.print(num + "은(는) ");
if(num>=0){
System.out.println("양수이다");
}
else{
System.out.println("음수이다");
}
//입력받은 수가 "홀수"인지 "짝수"인지
if(num%2 == 0){
System.out.println("짝수");
}
else{
System.out.println("홀수");
}
//2. 입력되는 두번째 arguments는 나이입니다
//입력된 나이를 사용하여 "성년" 또는 "미성년"인지를 출력하는 코드 (19세 이상:성년)
System.out.println("------------------");
int age = Integer.parseInt(args[1]);
System.out.println("입력나이 " + age + "살은 ");
if(age >= 19){
System.out.println("성년입니다");
}
else{
System.out.println("미성년입니다");
}
//3. arguments로 점수입력, 입력된 정수가 0~100점 사이면
//"유효점수" 그렇지 않으면 "잘못된 점수"를 출력
System.out.println("------------------");
int score = Integer.parseInt(args[2]);
System.out.print("입력한 점수");
if(score>=0 && score<=100){
System.out.println("는 " + score + "점 입니다");
}
else{
System.out.println("를 올바르게 다시 입력하세요.");
}
//4. 네번째 arguments로 언어의 종류가 입력된다
//입력된 언어가 Java 또는 Python 또는 C# 일 때에는 "최근 OOP언어"를 출력하고
//그렇지 않다면 "프로그래밍 언어"를 출력
System.out.println("------------------");
if(args[3].equals("Java")||args[3].equals("Python")||args[3].equals("C#")){
System.out.println("최근 OOP언어");
}
else{
System.out.println("프로그래밍 언어");
}
//5. 다섯번째 입력값을 long으로 처리하고(Wrapper class)
//입력값이 int의 범위일 때는
//"int"를 출력하고 그렇지 않으면 "long"을 출력하는 코드
System.out.println("------------------");
long inputNumber = Long.parseLong(args[4]);
System.out.println(args[4]);
if((inputNumber <= Integer.MAX_VALUE) && (inputNumber >= Integer.MIN_VALUE)){
System.out.println("int의 값");
}
else{
System.out.println("long의 값");
}
}//main
}//class
▼ switch ~ case 문 사용 예 ▼
package day_1027;
class UseSwitchCase{
//Constant: 변수를 상수처럼 사용할 때(가독성향상, 값 변경 불가)
public static final int GRADE_A_PLUS = 10;
public static final int GRADE_A = 9;
public static void main(String[] args) {
String i = "A"; //byte, short, int, char, String(JDK1.7부터 사용가능)
//case의 상수는 비교용도이기 때문에 위의 case와 인접상수(0,1,2,3)가 아니여도 된다
//가급적이면 인접상수로 case 작성한다(비교속도 향상)
switch(i){
case "A" :
System.out.println("A");
break;
case "1" :
System.out.println("B");
break;
case "2" :
System.out.println("C");
break;
default : System.out.println("Z");
}
//입력 점수에 대한 학점 구하기
//90~100 : A , 80~89: B, 70~79: C, 60~79: D, 0~59 : F
int score = Integer.parseInt(args[0]);
char grade = 'F';
//최종 학점 저장
System.out.print(score + "점은 ");
switch(score/10){
case 10 :
grade = 'A';
break;
case 9 :
grade = 'A';
break;
case 8 :
grade = 'B';
break;
case 7 :
grade = 'C';
break;
case 6 :
grade = 'D';
break;
default :
grade ='F';
break;
}//switch
System.out.println(grade + "학점입니다.");
System.out.println("------------------------");
grade = 64;
//최종 학점 저장
System.out.print(score + "점은 ");
switch(score/10){
case 6 :
grade++;
case 7 :
grade++;
case 8 :
grade++;
case 9 :
case 10 :
grade++;
break;
default :
grade+=6;
}//switch
System.out.println(grade + "학점입니다.");
}
}
'Web_Back-end > Java SE' 카테고리의 다른 글
[Java] 2020.10.29. day_7 반복문(for-each,while,do~while), instance변수,접근지정자 (0) | 2020.10.29 |
---|---|
[Java] 2020.10.28. day_6 package, for문, eclipse (0) | 2020.10.28 |
[Java] 2020.10.26. day_4 연산자 (0) | 2020.10.26 |
[Java] 2020.10.23. day 3_진수 변환, Wrapper Class(API), 연산자 (0) | 2020.10.23 |
[Java] 2020.10.22. day 2_EditPlus 사용 / 상수와 변수 / 형변환 (0) | 2020.10.22 |