프로그래밍 언어응용-if else문, switch, for, while
# 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("불합격입니다."}
*/
} //클래스
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);
}
}