** 제어문 : 조건문, 반복문
* 조건문
1. if문
형식)
if (조건문) {
실행문1;
}
실행문2;
결과)
조건문 true : 실행문1 --> 실행문2
false : 실행문2
ex)
public class IfTest {
public static void main(String[] args) {
int x; //선언
x = 19; //값을 할당
if(x > 10) {
System.out.println(x + "는 10보다 큽니다.");
}
int jumin = 1;
/*if ( jumin % 2 == 0) {
System.out.println("주민번호가 " + jumin + "인 사람의 성별 : 여자");
}
if ( jumin % 2 == 1)
System.out.println("주민번호가 " + jumin + "인 사람의 성별 : 남자");*/
//(더 간단한 코드)
String gender = "남자";
if ( jumin % 2 == 0) {
gender = "여자";
}
System.out.println("주민번호가 " + jumin + "인 사람의 성별 : " + gender);
System.out.println("프로그램 종료!!!!");
}
}
---------- run ----------
19는 10보다 큽니다.
주민번호가 1인 사람의 성별 : 남자
프로그램 종료!!!!
---------- run ---------- 19는 10보다 큽니다. 주민번호가 1인 사람의 성별 : 남자 프로그램 종료!!!!
2. if ~ else 문 : ~라면 ~가 아니라면
형식)
if (조건문) {
실행문1;
} else {
실행문2;
}
실행문3;
결과)
조건문 true : 실행문1 --> 실행문3;
false : 실행문2 --> 실행문3;
ex1)
public class IfElseTest {
public static void main(String[] args) {
int x =19;
if (x>10) {
System.out.println(x + "는 10보다 큽니다.");
} else {
System.out.println(x + "는 10보다 작습니다.");
}
int jumin = 2;
String gender = null;
//아직 만들지 않은 값 (String에만 들어갈 수 있다, boolean, int 등에는 null이 들어갈 수 없다)
if ( jumin % 2 == 0) {
gender = "여자";
} else {
gender = "남자";
}
System.out.println("주민번호가 " + jumin + "인 사람의 성별 : " + gender);
System.out.println("프로그램 종료!!!");
}
}
** ex2)
/*
주민번호의 7번째 숫자
1,2 : 1900년도 사람
3,4 : 2000년도 사람
1,3 : 남자
2,4 : 여자
샘플데이터
주민번호 : 3 2
결과 : 3은 2000년대 남자입니다. 2는 1900년대 여자입니다.
만약에 주민번호가 5이상이면 5는 외국인입니다.
*/
public class IfElseTest2 {
public static void main(String[] args) {
int jumin = 5;
if(jumin < 5) {
int year;
String gender;
if(jumin < 3) {
year = 1900;
} else {
year = 2000;
}
if(jumin % 2 == 0) {
gender = "여자";
} else {
gender = "남자";
}
System.out.println(jumin + "은 " + year + "년대 " + gender);
} else {
System.out.println(jumin + "은 외국인입니다.");
}
}
}
---------- run ----------
1은1900년대남자입니다.
ex3)
public class Test0 {
public static void main(String[] args) {
int x = 3;
int y = 2;
System.out.println(x!=y);
int money = 2000;
if (money >=3000) {
System.out.println("택시를 타고 가라");
} else {
System.out.println ("걸어가라");
}
}
}
---------- run ----------
true
걸어가라
ex4)
/*
시험점수 : 89 score
학점 : 90점 이상 A grade
80점 이상 B
70점 이상 C
F
결과 : 89점은 B학점입니다.
*/
public class IfElseTest3{
public static void main(String[] args) {
int score = 89;
char grade; //계속 바뀌는 값이니까
if (score >= 90){
grade = 'A';
} else {
if (score >= 80){
grade = 'B';
} else {
if (score >= 70){
grade = 'C';
} else {
grade = 'F';
}
}
}
System.out.println(score + "점은" + grade + " 학점입니다.");
}
}
---------- run ----------
89점은B 학점입니다.
3. if ~ else if ~ else 문 : ~라면 ~라면 ~라면 ~가 아니라면
형식)
if (조건문1) {
실행문1;
} else if (조건문2) {
실행문2;
} else {
실행문3;
}
실행문4;
결과)
조건문 1 true : 실행문1 --> 실행문4
false : 조건문2 true : 실행문2 --> 실행문4;
false : 실행문3 --> 실행문4;
ex1)
/*
시험점수 : 89 score
학점 : 90점 이상 A grade
80점 이상 B
70점 이상 C
F
학점은 X5점이상이면 X+
결과 : 89점은 B학점입니다.
*/
public class IfElseIfTest {
public static void main(String[] args) {
int score = 100;
String grade; //Q.char가 안되는 이유는?
if(score >= 90) {
grade = "A";
} else if(score >= 80){
grade = "B";
} else if(score >= 70) {
grade = "C";
} else {
grade = "F";
}
if(score == 100 || score % 10 >= 5 && score >= 70) {
grade += "+"; // grade = grade + "+" (grade에 +를 붙이겠다!!)
}
System.out.println(score + "점은 " + grade + "학점입니다.");
}
}
---------- run ----------
100점은 A+학점입니다.
ex2)
if문 중첩
public class IfTest1{
public static void main(String[] args) {
int score = 75;
String grade = " ";
if (score >=90) {
if (score >= 95){
grade = "A+";
} else {
grade = "A";
}
} else {
if (score >=85) {
grade = "B+";
} else {
grade = "B";
}
}
System.out.println(score + "는" + grade+ "학점입니다.");
}
}
4. switch ~ case문 // equal 비교일 때만 사용
(단, JDK6까지는 값에 정수만 가능했지만, JDK7부터는 "문자열"도 가능)
(정수 : byte short int long char)
형식)
switch(값) {
case 값1 : 실행문1; break;
case 값2 : 실행문2; break;
ex1)
public class SwitchCaseTest1 {
public static void main(String[] args) {
int x = 1;
switch(x) {
case 0 : System.out.println("x는 0입니다.");break;
case 1 : System.out.println("x는 1입니다.");break;
case 2 : System.out.println("x는 2입니다.");break;
default : System.out.println("x는 0, 1, 2 모두 아닙니다.");
}
/*
ASCII : 모든 문자는 숫자값
'0' = 48번 (0~9 총 10개)
'A' = 65번
'a' = 97번
*/
char c = 'b';
//System.out.println((int)c);
switch(c) {
case 'a' : System.out.println("x는 a입니다.");break;
case 'b' : System.out.println("x는 b입니다.");break;
case 'c' : System.out.println("x는 c입니다.");break;
default : System.out.println("x는 a b, c 모두 아닙니다.");
}
String s = "java";
switch(s) {
case "java" : System.out.println ("s는 java입니다.");break;
case "oracle" : System.out.println ("s는 oracle입니다."); break;
case "spring" : System.out.println ("s는 spring입니다."); break;
default : System.out.println ("s는 java oracle,spring 모두 아닙니다.");
}
}
}
---------- run ----------
x는 1입니다.
x는 b입니다.
s는 java입니다.
ex2)
/*
시험점수 : 89 score
학점 : 90점 이상 A grade
80점 이상 B
70점 이상 C
F
학점은 X5점이상이면 X+
결과 : 89점은 B학점입니다.
*/
public class SwitchCaseTest2 {
public static void main(String[] args) {
int score = 100;
String grade;
switch (score/10) { //동등비교밖에 안되니까 10으로 나눠주기
case 10 : case 9 : grade = "A"; break;
case 8 : grade = "B"; break;
case 7 : grade = "C"; break;
default : grade = "F";
}
if(score == 100 || score % 10 >= 5 && score >= 70) { //범위비교가 필요(switch문 x)
grade += "+"; // grade = grade + "+" (grade에 +를 붙이겠다!!)
}
System.out.println(score + "점은 " + grade + "학점입니다.");
}
}
---------- run ----------
100점은 A+학점입니다.
ex3)
한번에 처리하기
int month = Calendar.getInstance().get(Calendar.MONTH) + 1;
String season = "";
//case문을 한번에 사용하면 더 짧게 코드를 짤 수 있습니다.
switch(month) {
case 1:
case 2:
case 12:
season = "겨울";
break;
case 3:
case 4:
case 5:
season = "봄";
break;
case 6:
case 7:
case 8:
season = "여름";
break;
case 9:
case 10:
case 11:
season = "가을";
break;
}
System.out.println("지금은 " + month + "월이고, " + season + "입니다.");
}
'Language > Java' 카테고리의 다른 글
19.10.19. (ECLIPSE 설치/프로젝트 생성/소스파일/컴파일/실행/글꼴변경/라인번호 생성) (0) | 2021.01.15 |
---|---|
19.10.18. (ascii code/타입변환/강제형변환/자동형변환/가위바위보 소스/주사위 소스) (0) | 2021.01.15 |
19.10.16. (문자열 연결 연산자(+)/주석/연산자/자판기 소스) (0) | 2021.01.15 |
19.10.15. (변수/자료형DataType/접근제어자/명명규칙/자바키워드/변수선언/값대입/초기화) (0) | 2021.01.15 |
19.10.15. (JAVA란?/JAVA SETTING/Compile란?/JDK/JRE/JVM/ECLIPSE 설치/API 바로가기 만들기) (0) | 2021.01.15 |