if문의 소괄호 안에는 boolean값으로 평가도리 수 있는 조건식을 넣어주고 중괄호 안의 실행 블록에는 조건식이 참일 때 실행하고자 하는 코드를 적어주면 됩니다.
if(조건식){
//조건식이 참일 때
}
순서대로 if문의 조건식이 참이면 if문을, 거짓이면 else if문의 조건식을 비교합니다. else if문의 조건식이 참이면 실행하며 거짓일 경우 다음 else if문의 조건식을 비교합니다. 모두 거짓일 경우 else문을 실행합니다.
import java.util.Scanner;
public class Main {
static Scanner myInput = new Scanner(System.in);
public static void main(String[] args) {
String dice = myInput.nextLine();
if(dice.equals("1번"))
System.out.print("1");
else if(dice.equals("2번"))
System.out.println("2");
else if(dice.equals("3번"))
System.out.println("3");
else if(dice.equals("4번"))
System.out.println("4");
else if(dice.equals("5번"))
System.out.println("5");
else if(dice.equals("6번"))
System.out.println("6");
else
System.out.println("없는 숫자! " + dice);
}
}
if문과 같이 조건 제어문이지만 true,false로 구분하는 것이 아닌 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됩니다. if문 보다 간결한 코드를 작성할 수 있습니다.
import java.util.Scanner;
public class Main {
static Scanner myInput = new Scanner(System.in);
public static void main(String[] args) {
String dice = myInput.nextLine();
switch(dice){
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;
case "6":
System.out.println("6번");
break;
default:
System.out.println("없는 숫자! " + dice);
break;
}
}
}
case 값 :
: 으로 변수가 어느 값을 가졌는 지를 선택합니다.
break;
: 해당 case
문을 실행하고 switch문을 탈출하여 나오는 명령어입니다. 마지막에 break;
이 없다면 다음 case
문을 실행하게되고 원하지 않은 결과가 나올 수 있습니다.
default:
: if문의 else와 비슷한 역할을 합니다. 어떤 값도 해당 되지 않을 경우 실행하게 됩니다.
import java.util.Scanner;
public class Main {
static Scanner myInput = new Scanner(System.in);
public static void main(String[] args) {
String yourPosition = myInput.nextLine();
switch(yourPosition){
case "Senior" : // Senior일 경우
System.out.println("700만원");
break;
case "Junior" : //Junior 또는 Manager일 경우
case "Manager" : //실행문이 같으면 이렇게 작성 가능
System.out.println("500만원");
break;
default:
System.out.println("300만원");
break;
}
}
}
Junior
를 입력해보시면 case문 마지막에 break;
이 없다면 어떻게 되는지 확인 할 수 있습니다.
import java.util.Scanner;
public class Main {
static Scanner userInput = new Scanner(System.in);
public static void main(String[] args) {
String[] positionList = {"Manager", "Senior", "Junior"};
String yourPosition = userInput.nextLine(); //입력 받기
switch (yourPosition) {
case "Senior" -> System.out.println("700만원");
case "Junior", "Manager" -> System.out.println("500만원");
}
}
}
switch문 람다식
60~100점까지 D~A grade를 구분하고 1의 자리가 0~2라면 -
, 8~9라면 +
를 붙힙니다.
import java.util.Scanner;
public class Main {
public static String convertScoreToGradeWithPlusAndMinus(int score){
String grade;
if(score > 100 || score < 0){
return "INVALID SCORE";
}
if(score == 100){
return "A+";
}
if(score >= 90) {
grade = "A";
}else if(score >= 80) {
grade = "B";
}else if (score >= 70) {
grade = "C";
} else if (score >= 60) {
grade = "D";
} else {
grade = "F";
}
if(!grade.equals("F")){
int extra = score % 10;
if(extra <= 2)
grade = grade + "-";
else if(extra >= 8)
grade = grade + "+";
}
return grade;
}
public static void main(String[] args) {
int score = 62;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
score = 65;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
score = 68;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
score = 72;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
score = 75;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
score = 78;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
score = 82;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
score = 85;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
score = 88;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
score = 92;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
score = 95;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
score = 98;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
score = 100;
System.out.println(convertScoreToGradeWithPlusAndMinus(score));
}
}
조건식이 참인 동안 횟수만큼 반복적으로 수행합니다.
초기화
: for문이 시작할때 최초 한번만 수행되며, 변수의 초기값을 지정합니다.
조건식
: 계속 반복할지 여부를 결정합니다. for문이 1번 시작할 때 마다 true면 수행하고 false면 for문을 빠져 나옵니다.
증감식
: 반복횟수를 결정하는 규칙입니다. 변수를 어마나 더하고 빼냐에 따라 반복횟수를 조정할 수 있습니다.
for(초기화;조건식;증감식){
//조건식이 참일 때
}
예를 들어 1부터 100까지 더하는 for문을 구현하겠습니다.
public class Main {
public static void main(String[] args) {
int sum = 0;
for(int i=1;i<=100;i++)
sum += i;
System.out.println(sum);
}
}
//5050
향상된 for문은 조건식
초기화
증감식
을 사용하지 않습니다. python이나 자바스크립트와 같이 배열이나 컬렉션의 요소를 순차적으로 받아옵니다.
for(String 변수 :String[] 배열){
//배열의 요소들을 순서대로 변수로 읽어 들입니다.
}
public class Main {
public static void main(String[] args) {
String[] names = {"kimcoding", "javalee", "ingikim"};
for (String name : names)
System.out.println(name + "님은 자바를 공부중 입니다.");
}
}
/*
* kimcoding님은 자바를 공부중 입니다.
* javalee님은 자바를 공부중 입니다.
* ingikim님은 자바를 공부중 입니다.
* */
for문과 비슷한 기능고 ㅏ역할을 수행합니다. 하지만 구조는 다릅니다.
(초기화);
while(조건식){
실행문; //조건식이 참인 동안 실행
증감식;
}
초기화는 while문을 실행하기 전 한번 수행하고 증감식이 while문 마지막에 존재함으로써 유한하게 반복합니다.(증감식이 없으면 무한반복될 수 있으니 주의!)
1부터 100까지 더하는 while문
public class Main {
public static void main(String[] args) {
int num = 0, sum = 0;
while(num <= 10){
sum += num;
num++;
}
System.out.println(sum);
}
}
true나 false로 숫자 연산이 아닌 boolean으로 조건을 구분할 수도 있습니다.
boolean run = true;
int num = 1;
while(run){ // while(true) 조건문
num++; //실행문
System.out.println(num); //실행문
if(num == 22) { //조건문, num이 22가 되면 탈출! 얏호!
run = false;
}
}
do-while문은 거의 99% while문과 동일합니다. 하지만 조건식을 비교하고 실행
하는 while문과 달리, do-while문은 실행하고 조건식을 비교
하므로 순서가 다릅니다. 즉 조건식이 충족되지 않는다면 while문은 한번도 실행되지 않지만 do-while문은 무조건 1번 실행하고 비교하기 때문에 최소 1번은 수행하게 됩니다.
숫자 비교 예시
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int input = 0, randomNum = 0;
randomNum = (int)(Math.random() * 10) + 1;
Scanner scanner = new Scanner(System.in);
do{
System.out.println("1과 10 사이의 정수를 입력하세요");
input = scanner.nextInt();
if(input > randomNum)
System.out.println("더 작은 정수를 입력하세요");
else if(input < randomNum)
System.out.println("더 큰 정수를 입력하세요");
}while(input != randomNum);
System.out.println(randomNum +" 정답입니다!");
}
}
for문, while문, do-while문등 실행 중에 중지하고 탈출해야할 때 사용합니다. switch문의 break;
과 역할은 동일합니다.
public class Main {
public static void main(String[] args) {
Outer : for(int i=3;i<10;i++){
for(int j=5;j>0;j--){
System.out.println("i " + i + " j "+ j);
if(i == 5)
break Outer;
}
}
}
}
/*
i 3 j 5
i 3 j 4
i 3 j 3
i 3 j 2
i 3 j 1
i 4 j 5
i 4 j 4
i 4 j 3
i 4 j 2
i 4 j 1
i 5 j 5
*/
continue;
은 break;
과 다르게 탈출하는 것이 아니라 이후의 실행문들으 건너 띄어 넘고 증감식, 조건식으로 되돌아가서 실행문을 처음부터 실행하는 명령어 입니다.
홀수만 출력
public class Main {
public static void main(String[] args) {
for (int i=0;i<10;i++){
if (i % 2 == 0) { //나머지가 0일 경우는
continue; //다음 반복으로 넘어간다.
};
System.out.println(i); //홀수만 출력
}
}
}
알고 있었던 내용이지만, switch문 람다식, break Outer;등 처음 접하는 방법들도 있으니 주의해서 익혀야 겠습니다.