영어에서도 if,for를 많이 썻던 것으로 기억한다.
Java에서도 예외는 아니다..엄청 자주 나온다.
-조건문은 조건식과 실행될 하나의 문장 또는 블럭{}으로 구성한다. if(조건식) {문장}
-Java에서 조건문은 if문, switch문 2가지다.
-if문을 주로 사용하며, 경우의 수가 많은경우 switch문을 사용한다.
-모든 switch문은 if문으로 변경이 가능하지만,if문은 switch문으로 변경 할 수 없는 경우가 많다.
-if문은 if,if-else, if-else if 3가지가 형태가 있다.
-조건식의 결과는 무조건 true 또는 false가 나와야한다.
==================if형태==========================
// if(조건식) {
// //조건식의 결과가 true일 때 수행될 문장들
// }
int score =65; //score값 초기화
if(score > 60){
System.out.println("합격입니다.");
}
if(score < 60){
System.out.println("불합격입니다.");
}
}
}
==============if-else형태================
if(조건식){
//조건식의 결과가 true일 때 수행될 문장들
}
else{
//조건식의 결과가 false일 때 수행될 문장들
}
if(score>60){
System.out.println("합격입니다.");
}
else{
System.out.println("불합격입니다.");
}
}
}
=============if-esle if형태================
if(조건식1){
//조건식1의 결과가 true일 때 수행될 문장들
}
else if(조건식2){
//조건식1의 결과가 false일 때 조건식2의 결과가 true일 때 수행될 문장들
}
else if(조건식3){
//조건식1,2의 결과가 false일 때 조건식3의 결과가 true일 때 수행될 문장들
}
else{
//모든 조건식의 결과가 false일 때 수행될 문장들
}
if(score>=90){
System.out.println("A+");
}
else if(score>=80){
System.out.println("A");
}
else if(score>=70){
System.out.println("B");
}
else{
System.out.println("F");
}
}
}
이것의 응용으로 중첩if문이 있습니다.
-if문 안에 또 다른 if문을 중첩해서 넣을 수 있다.
-if문의 중첩횟수에는 제한이 없다.
if(조건식1){
//조건식1의 연산결과가 true일 때 수행될 문장들
if(조건식2){
//조건식1과,2가 true일 때 수행될 문장들
}
else{
//조건식1만 true고, 조건식2가 false일 때 수행될 문장들
}
if (score >= 90) {
grade = "A";
if (score >= 98) {
grade += "+"; //grade = grade + "+";
} else if (score < 94) {
grade += "-";
}
}else if (score >= 80) {
grade = "B";
if (score >= 88) {
grade += "+";
} else if (score < 84) {
grade += "-";
}
}else {
grade = "C";
}
}
//이 코드는 만약 score가 90점 이상일때 98점이상이면 A+,93점이하면 A-;
// score가 80점 이상일때 88점이상이면 B+,83점이하면 B-;
-if문의 조건식과 달리, 조건식의 계산결과가 int타입의 정수와 String 타입의 문자열만 가능
-조건식의 계산결과와 일치하는 case문으로 이동 후 break문을 만날 때 까지 문장들을 수행(만약break문이 없다면 switch문의 끝까지 진행한다.)
-일치하는 case문의 값이 없는 경우 if문의 else처럼 switch문에는 default문으로 이동한다.(default는 생략가능)
-case문의 값으로 변수를 사용할 수는 없다.(리터럴,상수,문자열 상수만 가능)
-주로 조건문에는 if문이 사용되지만,경우의 수가 많은 경우에 switch문을 사용하는 것이 효율을 높인다.
public class SwitchEx {
public static void main(String[] args) {
int num=1;
switch (조건식){
case 값1 :
//조건식의 결과가 값1과 같을 경우 수행될 문장들
break;
case 값2 :
//조건식의 결과가 값2와 같을 경우 수행될 문장들
break;
default:
//조건식의 결과가 일치하는 case문이 없을 때 수행될 문장들
}
switch (num){
case 1 : case 7 :
System.out.println("SAMSUNG");
break;
case 6 : case 8 :
System.out.println("LG");
break;
default :
System.out.println("UNKNOWN");
break;
}
}
}
이제 지금까지 배운 것들을 통해 응용해보자!
-switch문 안에 또다른 switch문이나 if문을 중첩해서 넣을 수 있다.
-이것 또한 중첩횟수에는 제한이 없다.
public class SwitchEx {
public static void main(String[] args) {
int num=1;
switch (num){
case 1 : case 7 :
System.out.println("SAMSUNG");
switch(num){
case 1 :
System.out.println("A");
break;
case 7 :
System.out.println("B");
break;
}
break;
case 6 : case 8 :
System.out.println("LG");
break;
default :
System.out.println("UNKNOWN");
break;
}
}
}
//출력을 해보면 num값에 1을 넣었으니 SAMSUNG,A가 출력된다.
이제 반복문에 대해서 공부해보자.반복문중에 for은 뒤에 배울내용에서도 엄청 많이쓰니까 꼭 기억하도록하자.
-문장 또는 문장들을 반복해서 수행할때 사용
-조건식과 수행할 블럭{} 또는 문장으로 구성
-반복회수가 중요한 경우에 for문, 그 외에는 while문을 사용한다.
-조건식과 수행할 블럭{} 또는 문장으로 구성
-초기화,조건식,증감식 그리고 수행할 블록{} 또는 문장으로 구성
for(초기화; 조건식; 증감식){
//조건식이 true일 때 수행될 문장들을 적는다.
}
(반복하려는 문장이 단 하나일 때는 중괄호{}를 생략할 수 있다.)
Ex)1부터 100까지 정수를 더하기
public int sum = 0;
for(int i=1; i<=100; i++){
sum += i; //sum = sum + i;
}
1.초기화 > 2.조건식 > 3.수행될 문장 > 4.증감식 (여기서 다시 2.조건식으로 돌아가서 반복)
-for문 안에 또 다른 for문을 포함시킬 수 있다.
-이것 또한 중첩횟수에는 제한이 없다.
대표적으로 중첩for문의 예제에는 구구단이 있다.
public class Gugudan {
public static void main(String[] args) {
int dan;
int times;
for(dan=2; dan<10; dan++){
for(times=1; times<10; times++){
System.out.println(dan + "X" + times + "=" + dan*times);
}
System.out.println();
}
}
}
-조건식과 수행할 블럭{} 또는 문장으로 구성
while(조건식) { //조건식의 연산결과가 true일 때 수행될 문장들 }
int i =0;
while(i>=0){
i =10;
System.out.prinln(i--);
}
-while문 안에 또 다른 while문을 포함시킬 수 있다.
-중첩횟수에 제한이 없다.
위의 for문에서 했던 구구단을 while로 변경해보자.
int i=2;
while(i <= 9){
int j=1;
while(j <=9){
System.out.prinln(i + "*" + j + "=" + i*j);
j++;
}
i++;
}
-while문의 변형. 블럭{}먼저 수행한 후 조건식을 계산한다.
-블럭{}이 최소한 1번 이상 수핼될 것을 보장한다.do{ //조건식의 연산결과가 true일 때 수행될 문장들 } while(조건식);
public class t {
public static void main(String[] args) {
int num = 6; //num변수에 6을 할당한다.
do {
System.out.println(num) //do안에있는 코드로 인해 num변수 6이 출력되고값이 1증가
num++;
}
while (num <= 5); //while조건식에 false가 되므로 do while반복문이 종료되며 "Hello do-while"출력
System.out.println("Hello do-while");
}
}
-자신이 포함된 하나의 반복문 또는 switch문을 빠져 나온다.
-주로 if문과 함께 사용하여 특정 조건을 만족하면 반복문을 빠져나온다.
숫자 1부터 더해서 합이 100이넘으면 반복을 종료하고 빠져나오자.
public class BreakExercise {
public static void main(String[] args) {
int num;
int sum=0;
for(num=1; sum < 100; num++){
sum += num;
if(sum>=100)
break;
}
System.out.println(num);
System.out.println(sum);
}
}
-자신이 포함된 반복문의 끝으로 이동한다.(다음 반복으로 넘어간다.)
-continue문 이후의 문장들은 수행되지 않는다.
-break문과 달리 반복문 전체를 벗어나지 않는다.
1부터 100까지의 홀수의 합을 구해보자.
public class Continueex {
public static void main(String[] args) {
int total =0;
int num;
for(num =1; num <=100; num ++){
if(num % 2 == 0) //num%2==0 는 짝수를 의미한다,홀수는num%3==0
continue;
total += num;
*} //*<-continue문이 수행되면 반복문의 끝으로 이동한다.
System.out.println("1부터 100까지의 홀수의 합은 " +total + "입니다.");
}
}
-반복문(for,while)앞에 이름을 붙이고, 그이름을 break,continue와 같이 사용함으로써
둘 이상의 반복문을 벗어나거나 반복을 건너뛰는 것이 가능하다.
public class NameBreak {
public static void main(String[] args) {
Lab : for(int i =2; i <= 9; i++){
for(int j =1; j<= 9; j++){
if(j==5)
break Lab;
System.out.println(i + "*" + j + "=" + i*j);
}
System.out.println();
}* //* <-Lab이름이 붙은 반복문을 벗어난다.
}
}