클라우드 융합 Full-stack 웹 개발자 양성과정/Java

프로그래밍 언어응용-if else문, switch, for, while

thesunset 2022. 9. 25. 13:48

# B_Else

package com.kh.chap01.condition;

import java.util.Scanner;

public class B_Else {

/*

* if-else

*

* => 모 아니면 도

*

* [표현법]

* if(조건식){

* 조건식이 true일 때 실행할 코드 - 1

* } else {

* 조건식이 false일 때 실행할 코드 - 2

* }

* => 조건식의 결과가 true일 경우 1을 실행

* => 조건식의 결과가 false일 경우 2를 실행

*

*/

public void method1() {

//연산자문제

//정수를 입력받고, 양수/0/음수 출력

Scanner sc = new Scanner(System.in);

//램의 구조 static, stack, heap 중 new는 heap에 존재 보통 변수는 stack, heap은 잠깐 공간을 빌려쓰는 것

System.out.println("정수를 입력해주세요.>");

int num = sc.nextInt();

//만약에 사용자가 입력한 정수가 양수(0보다 크다면)

//if num >0

if (num>0) { // 양수일 경우 이 코드블럭 내부를 실행하겠다.

System.out.println("양수");

// 조건식의 결과가 true => else블럭을 건너 뜀

// 불필요한 연산이 줄어듬 => 처리 속도가 향상됨

} else{ //양수가 아닐 경우 실행

if(num == 0) {//0일 경우

System.out.println("0");

}

else {//0이 아닐 경우

System.out.println("음수");}

}

}

public void method2() {

// 주민번호 입력 후 성별 판별

//1. 사용자로부터 주민번호 입력 받기 (String personId => XXXXXX-XXXXXXX)

Scanner sc = new Scanner(System.in);

System.out.println("주민번호를 입력해주세요");

String personId = sc.nextLine();

//2. 입력받은 주민번호로부터 성별에 해당하는 문자를 추출 char At(index) => 7번 인덱스

char gender = personId.charAt(7);

//if(gender == '1' || gender == '2' || gender == '3' || gender == '4')

if('1' <= gender && gender <= '4') {

//유효한 주민번호 입력

if(gender == '1'||gender == '3') {

System.out.println("남자");}

else {

System.out.println("여자");

}

}

else { //유효하지 않은 주민번호 처리

System.out.println("유효하지 않은 주민번호 입니다.");

}

}

/*

* if-else if 문

*

* [표현법]

*

* if(조건식1) {

* 조건식 1이 true일 경우 실행할 코드1

* } else if(조건식2)

* 조건식2가 true일 경우 실행할 코드2

* } else if(조건식3)

* 조건식3이 true일 경우 실행할 코드3

* } else if(조건식4)

* 조건식4가 true일 경우 실행할 코드4

* } else {

* 앞에서 기술했던 모든 조건들이 false일 경우 실행할 코드

* }

*

*/

public void method3() {

//정수 입력받아서 양수/0/음수

Scanner sc = new Scanner(System.in);

System.out.println("정수를 입력해주세요>");

int num = sc.nextInt();

if (num>0) { // 첫번째 if문에서 가장 많이 처리 할 수 있는 범위 처리

System.out.println("양수");

} else if (num<0) {

System.out.println("음수");

} else {System.out.println("0");}

}

public void method4() {

//나이를 입력받고 어린이 청소년 성인 판단

//0~13 : 어린이

//14~19 : 청소년

//20 ~ : 성인

// - : 외계인

Scanner sc = new Scanner(System.in);

System.out.println("나이를 입력해주세요.");

int age = sc.nextInt();

/*

if (age>19) {

System.out.println("성인입니다.");

} else if (age<14) {

System.out.println("어린이입니다.");

} else if (age>13 && age<20) {

System.out.println("청소년입니다.");

} else { System.out.println("외계인입니다.");

}

*/

if (age>=20) {

System.out.println("성인입니다.");

} else if (age>=14) {

System.out.println("청소년입니다.");

} else if (age>=13) {

System.out.println("어린이입니다.");

} else { System.out.println("외계인입니다.");

}

}

public void method5() {

//alt + ↑, ↓ 라인 선택 이동

String season;

//int temperature;

Scanner sc = new Scanner(System.in);

System.out.println("지금이 몇 월 인가요? >");

int month = sc.nextInt();

System.out.println("기온은 몇 도 입니까? >");

int temperature = sc.nextInt();

//봄, 여름, 가을, 겨울

// 폭염경보, 폭염주의보

// 한파경보, 한파주의보

// 1~12

// 3개씩

// 겨울 12, 1, 2

// 봄 3, 4, 5

// 여름 6, 7, 8, 9

// 가을 10, 11

if(month == 1 || month == 2 || month ==12) {

season = "겨울";

//만약 사용자가 입력한 기온이 -15도 이하라면 한파 경보

// -12도 이하라면 한파 주의보

if(temperature <= -15) {

// season = season + " 한파경보"

season += " 한파경보";

} else if (temperature <= -12) {

season += " 한파주의보";

}

} else if (3 <= month && month <= 5) {

season = "봄";

} else if (6 <= month && month <= 9) {

season = "여름";

if (temperature>=35) {

season += " 폭염경보";

} else if (temperature>=30) {

season += " 폭염주의보";

} else if (10<=month && month <= 11) {

season = "가을";

} else {season = " 해당하는 계절이 없습니다.";

}

System.out.println("계절: " + season);

}

//season엔 사용자가 입력한 값이 들어감, 만약 입력자가 계절 중 입력하지 않았다면 초기화하지 않은 상태이기 때문에 오류발생

} // 메서드 끝

} //클래스 끝


# C_Switch

package com.kh.chap01.condition;

import java.util.Scanner;

public class C_Switch {

/*

* switch문

*

* [표현식]

*

* switch() { 아래에 기술할 값들과 동등 비교를 할 대상자) {

* case 정수,문자,문자열 : 실행할코드1

* }

*

* switch(정수, 문자, 문자열 = 버튼) {

* case 값1 : 실행할 코드1; // 대상자 == 값1이 true일 경우 실행할 코드

* break; // switch영역을 빠져나간다.

* case 값2 : 실행할 코드2; // 대상자 == 값2가 true일 경우 실행할 코드

* break;

* case 값n : 실행할 코드n; // 대상자 == 값n이 true일 경우 실행할 코드

* break;

* default : 실행할코드; // == else

* }

*/

public void method1() {

//사용자한테 값을 입력받아서 홀수, 짝수 판별 => 시험에 나올 수도 있음!!

Scanner sc = new Scanner(System.in);

System.out.println("정수를 입력해주세요>");

int num = sc.nextInt();

int oddEven = num % 2; //0:짝수, 1:홀수

switch(oddEven) {

case 0 : System.out.println("짝수");

break;//스위치문의 내부의 break는 스위치를 빠져나감

case 1 : System.out.println("홀수");

}

}

public void method2() {

// 1. 사용자로부터 주민번호 입력받기 (String personId) => 000000-1234567

Scanner sc = new Scanner(System.in);

System.out.println("주민번호를 입력해주세요.>");

String personId = sc.nextLine();

// 2. 입력받은 주민번호로부터 성별에 해당하는 문자를 추출

char gender = personId.charAt(7);

String gender2;

// 3. switch문을 이용해서 조건문을 작성

switch(gender) { // 프로그램은 위에서 아래로 가기때문에 break문을 작성하지 않을 시 남자, 여자를 입력하면 모두 출력되게 됨.

case '1' :

case '3' : gender2 = "남자";

break;

case '2' :

case '4' : gender2 = "여자";

break;

default : gender2 = "외계인";

}

System.out.println(gender2 +"입니다.");

} //매서드

//switch => 한식가게(K-food)

public void kFoodMarket() {

//사용자에게 구매할 한식의 이름을 입력받아

//각 음식마다의 가격을 출력해줄 것

// 된장찌개, 김치찌개, 비빔밥, 국밥, 고등어순살조림, 떡볶이

// 7000, 7000, 7000, 8000, 9000, 5000

//없는 메뉴입니다.

Scanner sc = new Scanner(System.in);

System.out.println("어서오세요");

System.out.println("구매할 음식을 입력해주세요. (된장찌개, 김치찌개, 비빔밥, 국밥, 고등어순살조림, 떡볶이 중) >");

String kFood = sc.nextLine();

int price=0;

switch (kFood) {

case "된장찌개" :

case "김치찌개" :

case "비빔밥" : price = 7000;

break;

case "국밥" : price = 8000;

break;

case "고등어순살조림" : price = 9000;

break;

case "떡볶이": price = 5000;

break;

default : System.out.println("없는 메뉴입니다.");

return; // 현재 실행되고 있는 메소드 영역을 아예 빠져나간다.

//메소드 호출한 곳으로 돌아감 (run클래스로) - 프로그램이 아예 종료되는 것은 아님

}//스위치

System.out.printf("%s의 가격은 %d원 입니다.", kFood, price );

} //매서드

public void method4() {

//로그인 기능(메소드: 웹서버에 로그인 요청 - > 응답)

//회원가입 시 아이디와 비밀번호를 입력해 요청 - > 응답(성공/실패) > 어딘가에 저장을 해놓음

//내 호스트에서 로그인요청을 했을 때 저장해놓은 곳에 확인

Scanner sc = new Scanner(System.in);

System.out.println("아이디: ");

String userId = sc.nextLine();

System.out.println("비밀번호: ");

String userPwd = sc.nextLine();

String id = "user01";

String pwd = "pass01";

if(userId.equals(id) && userPwd.equals(pwd)) {

System.out.println("로그인 성공");

} else if (!userId.equals(id)) { //부정은 맨 앞에 !로 붙여주면됨

System.out.println("아이디가 일치하지 않습니다.");

} else {

System.out.println("비밀번호가 일치하지 않습니다.");

}

}

//기본자료형: byte, short, int, long, double, float, char, boolean

// => 기본자료형같은 경우에는 동등비교 (==,!=)가 잘 됨

//참조자료형: string

//=> 동등비교(==,!=)가 불가능!

//왜? 참조자료형의 경우 실제로 변수에 담기는 값이 '주소값'이기 때문

//문자열을 비교할 때 : equals()를 사용한다. 결과값: true, false

//[표현법] 문자열.equals("비교할 문자열");

public void method5() {

Scanner sc = new Scanner(System.in);

System.out.println("국어점수를 입력해주세요 >");

int kor = sc.nextInt();

System.out.println("수학점수를 입력해주세요>");

int math = sc.nextInt();

System.out.println("영어점수를 입력해주세요>");

int eng = sc.nextInt();

int sum = (kor + math + eng);

double avg = sum/3; // 소수점이 나올 수 있으므로 double로 씀 => 자동형변환됨

if(kor + math + eng >= 180) {

if (kor >= 40) {

if (math >= 40) {

if(eng >=40) {

System.out.printf("국어점수: %d \n수학점수: %d \n영어점수: %d \n합계점수: %d \n평균점수: %d \n축하합니다, 합격입니다.", kor, math, eng, sum, avg);

}

}

}

} else {System.out.printf("불합격입니다.");}

}

/* 다른 방법

* if ( (kor >= 40 && math >= 40 && eng >= 40) && (avg >= 60)) {

* System.out.printf("국어점수: %d \n수학점수: %d \n영어점수: %d \n합계점수: %d \n평균점수: %d \n축하합니다, 합격입니다.", kor, math, eng, sum, avg);

* } else {System.out.printf("불합격입니다."}

*/

} //클래스


#A_For

package com.kh.chap02.loop;

import java.util.Scanner;

public class A_For {

/*

* for문

* for() {

*

* }

*

* 소괄호 안에 반복을 지정하는 부분이 있고,

* 초기식; 조건식; 증감식 세 가지로 이루어진다.

* ;각각의 식들을 세미콜론으로 구분한다.

*

* [표현법]

* for(초기식; 조건식(논리값); 증감식) { // 반복횟수를 지정하는 요소들

* 반복적으로 실행시키고자 하는 코드

* }

*

* - 초기식: 반복문이 시작될 때 "초기에 단 한 번만 실행"될 구문

* 반복문에서 사용할 변수를 선언하고 초기화하는 구문 => int i = 0; //i를 제어변수

*

* - 조건식: "반복문이 실행될 조건"을 작성하는 구문

* 조건식이 true일 경우 반복을 실행

* 조건식이 false일 경우 반복문을 멈추고 빠져나옴 => i < 10;

*

* - 증감식: "반복문을 제어하는 변수 값"을 증감시키는 구문

* 보통 초기식에서 선언된 변수를 가지고 증감식을 작성

* 이때, 보통 증감연산자가 주로 쓰임 => i++

*

*

*/

public void method1() {

//안녕하세요를 5번 반복헤사 출력하고 싶다.

/*

System.out.println("안녕하세요.");

System.out.println("안녕하세요.");

System.out.println("안녕하세요.");

System.out.println("안녕하세요.");

System.out.println("안녕하세요.");

*/

//적은 횟수는 얼마든지 복붙이 가능!

//120만번 돌린다, 12만번 12000번 반복하는 것은? => 생산성이 떨어진다.

for(int i = 0; i < 5; i++) {

System.out.println("안녕하세요!");

}

}

public void method2() {

//고정된 문자열이 아닌 매 번 달라지는 출력결과를 확인해보자!

//i:0

//i:1

//i:2

/*for(int i = 0; i <3; i++) {

System.out.println("i:" + (i + 1));

}

for(int i = 1; i<4; i++) {

System.out.println("i:" +i);

}

*/

//i의 값이 1에서부터 5와 같아질 때까지 1씩 증가

for(/*1번(처음 딱 한 번만 사용, 그 이후는 2번으로 감)*/int i = 1;

/*2번*/ i <=5;

/*4번*/i++) //i라는 변수는 반복문 내에서만 사용 가능

{

/*3번*/System.out.println(i + "번 반복");

} //조건식이 false가 나오는 순간 for문을 빠져나옴

//감소하는 예

//i의 값이 10에서부터 6보다 크거나 같을 때까지 1씩 감소하면서 반복수행

//10 9 8 7 6

for(int i= 10; i>=6; i--) {

System.out.println("i: " + i);

}

System.out.println("--------------------------------------");

// 증감 1씩 => 2씩 증가!

// 1 3 5

for (int i = 1; i<=5; i+=2) {

System.out.println("i: "+ i);

}

}

public void method5() {

//*****

//*****

//*****

//*****

//*****

for(int j = 1; j<=5; j++) {

for(int i = 1; i<=5; i++) {

System.out.print("*");

}//내부 for문 끝

System.out.println();//개행문자 (5번 반복 후 다시 외부 for문)

} //외부 for문 끝

System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

System.out.println("for문 안에 if문쓰기");

for(int i = 0; i<30; i++) {

//출력형식: X(시작은 1부터)번째 반복입니다.

//10번째 반복마다 ☆

System.out.println((i+1) + "번째 반복입니다." );

if ((i+1)%10==0) { //앞에서 i+1을 입력해줘 if문에도 i+1을 적용해줘야 함.

System.out.println("☆");

} //if문 끝

} //for문 끝

}// 메서드 끝

// 구구단

// 사용자한테 단을 입력받아서

// 구구단을 입력해보다

// 매소드 이름은 gugudan()

public void gugudan() {

Scanner sc = new Scanner(System.in);

System.out.println("구구단의 단을 입력해주세요.(숫자)>");

int gu = sc.nextInt();

//반복되는 구문은 반복문으로 치환이 가능하다 => 반복문을 9번 반복

for(int i = 1; i<=9; i++) {

System.out.println(gu + "X" + i + "=" + (gu*i));

//System.out.printf("%d X %d = %d\n, gu, i, gu*i"); //printf를 이용한 방법

}

} //메소드 끝

}//클래스 끝


# B_While

package com.kh.chap02.loop;

public class B_While {

/*

* while문

*

* [표현법]

*

* 초기식; // 필수는 아님

*

* while(조건식) {

* 반복적으로 실행할 코드; // a

* 증감식; // 필수는 아님

* }

* 괄호 안에 조건식이 true일 경우 해당(a) 구문을 반복적으로 실행

*

* while(true) 반복을 무조건 시킬거야! => 무한반복

*

* for / while

*

* => 무한반복 while

* => 반복의 횟수를 명확히 알고 있다 => for

* => 반복의 횟수를 개발자가 가늠할 수 없다 => while

*

*/

public void method1() {

/*

int i = 0;

while(i < 5) {

++i; // 조건식 다음으로 > i값이 먼저 증가 1번째~

System.out.println(i + "번째 안녕하세요!");

//i++ >i값이 출력 후 증가 0번째~

}//while문 끝

int i = 10;

while(i >= 6) {

System.out.println(i + "(으)로 줄어든다");

i--; //제어변수의 값을 사용해야하면, 밑에 작성

}

*/

int i = 1;

while (i<=10) {

System.out.println(i);

//증감식

//i = i + 2;

i += 2;

} //1 3 5 7 9

}

public void method3() {

// 1~100까지 짝수만 더하기

int i = 1; // i를 1로 초기화 (초기식)

int sum = 0;

while (i <= 100) {

if(i%2==0) {

sum+=i;

}

i++;

}//while끝

System.out.println(sum);

}

}