A_If.java
package com.kh.chap01.condition;
import java.util.Scanner;
public class A_If {
/*
* 프로그램 진행은 기본적으로 순차적으로 진행됨
* 단, 이 순차적인 흐름을 바꾸고자 한다면 "제어문"이라는 걸 통해서 직접 제어가능
*
* 선택적으로 실행하고자 한다면 => 조건문
* 반복적으로 실행하고자 한다면 => 반복문
* 그 외의 흐름 제어 => 분기문
*
* < 조건문 >
* 조건식을 통해 참이냐 거짓이냐를 판단해서
* 해당 조건이 참일경우 그에 해당하는 실행문을 실행
*
* --> 조건식의 결과 true/false 여야함
* --> 조건식에서는 비교연산자(대소, 동등),논리연산자(&&, ||), 논리부정연산자(!)
*
* 조건문 크게 if문과 switch문으로 나뉜다.
*
* 그 중 if문에서는 크게 3가지로 나뉨
* 1. 단독 if문
* 2. if-else문
* 3. if-else if문
*
* * 단독 if문
*
* if(조건식) {
* 실행할 코드 ... ;
* }
*
* --> 조건식이 true일 경우 중괄호 안의 코드 실행
* --> 조건식이 false일 경우 중괄호 안의 코드 무시하고 건너뜀
*
* if-else(
*
*/
public void method1() {
// 연산자 실습문제 1번,2번
Scanner sc = new Scanner(System.in);
System.out.print("정수 : ");
int num = sc.nextInt();
if (num > 0) {
System.out.println("양수다");
}
/*
if(num <= 0) {
System.out.println("양수가 아니다");
}
*/
if(num == 0) {
System.out.println("0이다.");
}
if(num < 0) {
System.out.println("음수다.");
}
}
public void method2() {
// 실습문제 3번
Scanner sc = new Scanner(System.in);
System.out.println("정수 : ");
int num = sc.nextInt();
if(num % 2 == 0) {
System.out.println("짝수다");
}
if(num % 2 == 1) {
System.out.println("홀수다");
}
}
public void method3() {
// 실습문제 5번
Scanner sc = new Scanner(System.in);
System.out.print("이름 : ");
String name = sc.nextLine();
System.out.print("학년(숫자만) : ");
int grade = sc.nextInt();
System.out.print("반(숫자만) : ");
int classgrade = sc.nextInt();
System.out.print("번호(숫자만) : ");
int classNum = sc.nextInt();
sc.nextLine();
System.out.print("성별(M/F) : ");
char gender = sc.nextLine().charAt(0);
System.out.print("성적(소수점 아래 둘째 자리까지) : ");
double score = sc.nextDouble();
String student = ""; //지역변수를 셋팅할 때 반드시 초기화하는 습관들이기 (if문들이 모두 false일수 있기 때문에)
if (gender == 'M' || gender == 'm') {
student = "남학생";
}
if (gender == 'F' || gender == 'f') {
student = "여학생"; // 동일한 변수명을 사용할 수 있는 이유는 위 if문이 true면 메소드가 끝나서
}
if (gender != 'M' && gender != 'm' && gender != 'F' && gender != 'f') {
System.out.println("잘못 입력하셨습니다!");
return; // 해당 메소드 자체를 빠져나가는 구문 ( 즉, 이 메소드를 호출했던 곳으로 돌아감 -> a.method3();으로 돌아감)
}
System.out.println(
grade + "학년 " + classNum + "반 " + classNum + "번 " + name + " " + student + "의 성적은 " + score + "이다. ");
}
public void method4() {
// 실습문제 6
// 어린이(13세 이하)인지, 청소년(13세 초과 ~ 19세 이하)인지, 성인(19세 초과)
Scanner sc = new Scanner(System.in);
System.out.print("나이 : ");
int age = sc.nextInt();
if(age <= 13) {
System.out.println("어린이");
}
if(age > 13 && age <= 19) {
System.out.println("청소년");
}
if(age > 19) {
System.out.println("성인");
}
}
public void method5() {
// 새로운 예시
// 이름 입력 받은 후 본인이 맞는지 확인하는 메소드
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
System.out.print("이름 : ");
/*
String name = sc.nextLine();
// name에 담긴값이 "한승표"와 일치할 경우 => "본인입니다."
if(name == "한승표") {
System.out.println("본인입니다.");
}
// name에 담긴값이 "한승표"와 일치하지 않을 경우 => "본인이 아닙니다."
if(name != "한승표") {
System.out.println("본인입니다.");
}
*/
/*
* 위의 내용들 제대로 실행 X
* 기본 자료형들끼리 비교시에 ==, != 과 같은 동등비교 사용 가능
*
* 단, String 기본자료형이 아닌 참조자료형
*
* 그래서 String 문자열간에 비교에 있어서는 .equals(비교할 값) 메소드 활용
*
*/
// name == "한승표"
if(name.equals("한승표")) {
System.out.println("본인입니다.");
}
// name != "한승표"
if(!name.equals("강보람")) {
System.out.println("본인이 아닙니다.");
}
}
}
Point
if(조건식) -> 조건식 안에 String이 들어갈 경우 동등비교를 '==' 가 아닌 'equals'로 해준다.
B_Else.java
package com.kh.chap01.condition;
import java.util.Scanner;
public class B_Else {
/*
* if-else 문
*
* if(조건식) {
* .. 실행코드 1 ..;
* } else {
* .. 실행코드 2 ..;
* }
*
* --> 조건식의 결과가 true일 경우 실행코드1 수행 후 if-else문 빠져 나감.
* 단, 결과가 false일 경우 무조건 실행코드2 수행됨
*
* if - else if문
*
* if(조건식1) {
* .. 실행코드 1 ..;
* } else if(조건식2) {
* .. 실행코드 2 ..;
* } else if(조건식3) {
* .. 실행코드 3 ..;
* } else { -> 위의 조건들이 다 false일 경우 반드시 실행할 코드 ..; else문은 생략가능
*
* }
*
* 조건식 1의 결과가 true일 경우 실행코드1 수행하고 빠져나감
* 단, 조건식1의 결과 false일 경유 조건식2 실행
* 조건식2의 결과 true일 경우 실행코드2 수행하고 빠져나감
* 단, 조건식 2의 결과 false일 경우 그 뒤의 조건...
*
* 단, else문이 제시되어있을 경우 모든 조건들이 다 false일 경우는 최종적으로 else 구문 실행
*
*/
public void method1() {
// A_IF 클래스의 method2() (짝수인지 홀수인지)
Scanner sc = new Scanner(System.in);
System.out.print("정수 : ");
int num = sc.nextInt();
if(num % 2 == 0) {
System.out.println("짝수다");
}else {
System.out.println("홀수다");
}
}
public void method2() {
// A_If 클래스의 method1() (양수, 0, 음수)
Scanner sc = new Scanner(System.in);
System.out.print("정수 : ");
int num = sc.nextInt();
if(num > 0) {
System.out.println("양수다");
}else if(num == 0) {
System.out.println("0이다");
}else //if(num < 0 -> 조건 검사 필요없음 사실상 음수기 때문에
{
System.out.println("음수다");
}
}
public void method3 () {
Scanner sc = new Scanner(System.in);
System.out.print("학년 : ");
int grade = sc.nextInt();
System.out.print("반 : ");
int classNum = sc.nextInt();
System.out.print("번호 : ");
int num = sc.nextInt();
sc.nextLine();
System.out.print("이름 : ");
String name = sc.nextLine();
System.out.print("성적 : ");
double score = sc.nextDouble();
System.out.print("성별(M/F) : ");
char gender = sc.nextLine().charAt(0);
String student = "";
if(gender == 'M' || gender == 'm') {
student = "남학생";
}else if(gender == 'F' || gender == 'f') {
student = "여학생";
}else {
System.out.println("잘못 입력하셨습니다.");
return;
}
System.out.printf("%학년 %반 %d번 %s %s의 성적은 %.2f이다.",
grade, classNum, num, name, student, score);
}
public void method4() {
// A_If 클래스의 method4() (어린이, 청소년, 성인)
Scanner sc = new Scanner(System.in);
System.out.print("나이 : ");
int age = sc.nextInt();
if(age <= 13) {
System.out.println("어린이");
}else if(age > 13 && age <= 19) { // (age <= 19) 이렇게 쓰는 게 더 효율적 앞선 조건식에서 age는 13이하는 아니라고 했기 때문에
System.out.println("청소년");
}else {
System.out.println("성인");
}
}
public void method5() {
// 새로운 예시
// 사용자에게 점수를 입력받아
// 90점 이상 => A등급
// 90점 미만 80점 이상 => B등급
// 80점 미만 70점 이상 => C등급
// 70점 미만 60점 이상 => D등급
// 60점 미만 => F등급
// "당신의 점수는 xx점이고, 등급은 x등급입니다.
Scanner sc = new Scanner(System.in);
System.out.print("점수 : ");
int score = sc.nextInt();
String grade; // 값이 없는데 빨간줄이 안뜨는 이유는 아래 else 가 있기 때문에 else가 있으면 무조건 실행될 경우가 있다는 뜻
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";
}
//System.out.println("당신의 점수는 " + score + "점이고, 등급은 " + grade + "등급입니다.");
System.out.printf("당신의 점수는 %d점이고, 등급은 %s입니다.", score, grade);
}
public void method6() {
// 위의 문제에서 각 등급별 중간 점수 이상일 경우 등급에 "+"라는 문자를 추가해서 출력
// 예) 95점이상 A+ / 85점이상 B+
Scanner sc = new Scanner(System.in);
System.out.print("점수 : ");
int score = sc.nextInt();
String grade;
if(score >= 90) {
grade = "A";
if(score >= 95) {
//grade = grade + "+"; // grade = "A" + "+" ;
grade += "+";
}
}else if(score >= 80) {
grade = "B";
if(score >= 85) {
grade += "+";
}
}else if(score >= 70) {
grade = "C";
if(score >=75) {
grade += "+";
}
}else if(score >= 60) {
grade = "D";
if(score >= 65) {
grade += "+";
}
}else {
grade = "F";
}
System.out.println("당신의 점수는 " + score + "점이고, 등급은 " + grade + "등급입니다.");
}
public void method7() {
Scanner sc = new Scanner(System.in);
System.out.print("이름 : ");
String name = sc.nextLine();
if(name.equals("강보람")) {
// 문자열 비교는 위와 같이 실행해야한다. == 으로 비교시 false가 무조건 나온다. 문자 그대로가 아니라 주소값으로 비교하기 때문에.
System.out.println("본인입니다.");
}else {
System.out.println("본인이 아닙니다");
}
}
}
'JAVA > JAVA 기초' 카테고리의 다른 글
JAVA 기초 - 반복문 (For) (0) | 2020.06.04 |
---|---|
Java 기초 - 제어문 (Switch) (0) | 2020.06.04 |
JAVA 기초 - 연산자(Operator) 실습예제 (0) | 2020.05.31 |
JAVA 기초 - 형변환(Casting) 실습예제 (0) | 2020.05.31 |
JAVA 기초 - 변수(Variable) 실전예제 (0) | 2020.05.31 |