Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- 사용자 정의 예외처리
- 비전공자
- for문
- 캐스팅연산자
- AoutoBoxing
- 코딩
- 알고리즘
- userDefineException
- super 생성자
- 취준생
- 개발
- 부모 생성자
- Calendar Class
- 개발자
- 국비지원
- exception
- 프로그래머스
- 추상화
- do~while문
- 자바
- 상속
- Java
- 가위바위보프로그램
- 백앤드
- 독학
- 예외처리
- 예외던지기
- Date Class
- 클래스의구조
- 생성자
Archives
- Today
- Total
유난스런 개발 기록
[JAVA] Day-6 _ 조건문(if문, if else문, else if문, switch문) 본문
day-6
조건문(if문, if else문, else if문, switch문)
조건문이란?
- 프로그램을 제어할 때 사용하는 문법으로 가장 기본적이고 중요한 문법이다.
- 크게 조건 제어문과 반복 제어문으로 구성된다.
if문
- if문의 조건식이 참이어야 블록 안에 지정된 수행문이 실행된다.
- 수행문이 한줄이면 블록 {}를 생략할 수 있다.
public class MemberMain {
public static void main(String[] args) {
int score =95;
if(score> 80) {
System.out.println("합격입니다.")
}
}
}
중첩 if문
- if문 안에 다시 if문을 중첩해서 사용한 것이다.
- 중첩 제한은 없다.
package my.day06.a.IF;
public class MemberMain {
public static void main(String[] args)
int score =95;
if(score> 80) {
if(score>=90) {
System.out.println("차석으로.")
}
}
System.out.println("합격입니다.")
}
}
if else문
- if문 하나만 이용하면 조건식이 참인 경우에만 시행이 된다.
- 이때 거짓인 조건식을 통해 프로그램을 실행하려면 else를 붙여서 사요한다.
package my.day06.a.IF;
public class MemberMain {
public static void main(String[] args) {
int num = 100;
int num2 = 90;
if(num > num2) {
System.out.println(num +"이"+ num2+"보다 큽니다.");
}
else {
System.out.println("num +"이"+ num2+"보다 크지 않거니 깉습니다.");
}
}
}
if ~ else if문
- if의 조건식이 참이면 if의 수행문이 실행
- else if의 조건식이 참이면 else if의 수행문이 실행
- else의 조건식이 참이면 else의 수행문이 실행
package my.day06.a.IF;
public class MemberMain {
public static void main(String[] args) {
int num = 100;
int num2 = 90;
if(num > num2) {
System.out.println(num +"이"+ num2+"보다 큽니다.");
}
else if(num < num2){
System.out.println("num +"이"+ num2+"보다 작습니다.");
}
else {
System.out.println("num +"은"+ num2+"와 같습니다..");
}
}
}
오늘 수업시간에 진행한 실습 코드로 마무리
package my.day06.a.IF;
public class Member {
// 필드를 생성해준다. (멤버변수, 클래스변)
String id;
String name;
String nickname;
// 필드값을 호출하는 메소드를 생성, 리턴타입은 보이드로 없다.
void showInfo() {
System.out.println("\n=== "+ name + "님의 회원정보 ==="
+ "+1. 아이디: \" + id + \n"
+ "+2. 이름: \" + name + \n"
+ "+1. 닉네임: \" + nickname + \n"
);
}
}
package my.day06.a.IF;
public class MemberMain {
public static void main(String[] args) {
// 인스턴스를 생성해 각각의 회원들의 정보를 넣어준다.
new Member(); // 생성자로 새로운 멤버를 만들어준다.
Member mbr1 = new Member(); // 새로운 멤버의 값을 mbr1에 저장
mbr1.id = "leess";
mbr1.name = "이순신";
mbr1.nickname = new String("장군");
Member mbr2 = new Member(); // 새로운 멤버의 값을 mbr2에 저장
mbr2.id = "eomjh";
mbr2.name = "엄정화";
mbr2.nickname = new String("가수");
Member mbr3 = new Member(); // 새로운 멤버의 값을 mbr3에 저장
mbr3.id = "leess";
mbr3.name = "이순신";
mbr3.nickname = new String("장군");
// 조건문을 통해 멤버들간의 메모리 주소를 비교 후 결과를 출력해보자.
if(mbr1 == mbr2) {
// 인스턴스(객체) 와 인스턴스(객체) 를 비교(==)할 때는 메모리상에 올라가 있는 인스턴스(객체)의 메모리상의 주소를 비교한다.
System.out.println("인스턴스 mbr1 과 인스턴스 mbr2 는 동일한 메모리 주소를 참조하고 있습니다.");
}
else if(mbr1 == mbr3) {
// 두 객체는 필드값은 같지만 메모리상의 주소가 다르다. 왜냐하면 참조변수의 형태이기 때문에 각자 메모리 공간을 할당 받는다.
System.out.println("인스턴스 mbr1 과 인스턴스 mbr3 은 동일한 메모리 주소를 참조하고 있습니다.");
}
else {
System.out.println("인스턴스 mbr1 과 인스턴스 mbr2 와 mbr3은 모두 다른 메모리 주소를 참조하고 있습니다.");
}
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
String passwd_1 = new String("abcd"); //passwd 인스턴스 생성 후 값을 넣어준다.
String passwd_2 = new String("abcd");
// 조건문을 통해 인자가 같은 참조변수도 메모리상에 독립적으로 올라가는지 확인해보자.
if(passwd_1 == passwd_2) {
// 인스턴스(객체) 와 인스턴스(객체) 를 비교(==)할 때는 메모리상에 올라가 있는 인스턴스(객체)의 메모리상의 주소를 비교한다.
System.out.println("passwd_1 과 passwd_2 는 동일한 메모리 주소를 참조하고 있습니다.");
}
else {
System.out.println("passwd_1 과 passwd_2 는 서로 다른 메모리 주소를 참조하고 있습니다.");
}
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
String passwd_3 = "abcd"; // String 타입은 문자열 저장소로 많이 쓰인다. 때문에 참조변수 new처럼 잘 사용하지 않는다.
String passwd_4 = "abcd"; // 웹에 들어가면 String만 사용한다.
if(passwd_3 == passwd_4) {
// passwd_3 에 저장된 값("abcd")과 passwd_4 에 저장된 값 ("abcd")을 비교하는 것이다.
// 인스턴스(객체) 와 인스턴스(객체) 를 비교(==)할 때는 메모리상에 올라가 있는 인스턴스(객체)의 메모리상의 주소를 비교한다.
System.out.println("passwd_3 과 passwd_4 는 동일한 값을 갖고 있습니다.");
}
else {
System.out.println("passwd_1 과 passwd_2 는 서로 다른 값을 갖고 있습니다.");
}
System.out.println("\n~~~~~~~ 문자열 값을 비교시 .equals() 메소드를 사용하자 ~~~~~~~\n");
if(passwd_1.equals(passwd_2)) {
// passwd_3 에 저장된 값("abcd")과 passwd_4 에 저장된 값 ("abcd")을 비교하는 것이다.
// 인스턴스(객체) 와 인스턴스(객체) 를 비교(==)할 때는 메모리상에 올라가 있는 인스턴스(객체)의 메모리상의 주소를 비교한다.
// equals()는 메모리상의 주소가 아닌 우리가 지정해준 값을 비교해준다.
System.out.println("passwd_1 과 passwd_2 는 동일한 값을 갖고 있습니다.");
}
else {
System.out.println("passwd_1 과 passwd_2 는 서로 다른 값을 갖고 있습니다.");
}
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
if(passwd_3.equals(passwd_4)) {
// passwd_3 에 저장된 값("abcd")과 passwd_4 에 저장된 값 ("abcd")을 비교하는 것이다.
// 인스턴스(객체) 와 인스턴스(객체) 를 비교(==)할 때는 메모리상에 올라가 있는 인스턴스(객체)의 메모리상의 주소를 비교한다.
// equals()는 메모리상의 주소가 아닌 우리가 지정해준 값을 비교해준다.
System.out.println("passwd_3 과 passwd_4 는 동일한 값을 갖고 있습니다.");
}
else {
System.out.println("passwd_3 과 passwd_4 는 서로 다른 값을 갖고 있습니다.");
}
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
// if(mbr1.id == mbr3.id) 는 사용하지 마세요!! 이것은 메모리 주소 비교
// 해당 조건문은 mbr1과 mbr3의 id값을 비교하여 조건에 맞게 출력해준다.
if(mbr1.id.equals(mbr3.id)) {
System.out.println(mbr1.id+ " 와 " +mbr3.id+ " 은 같습니다.");
}
else {
System.out.println(mbr1.id+ " 와 " +mbr3.id+ " 은 같지 않습니다.");
}
// if(mbr1.nickname == mbr3.nickname) 는 사용하지 마세요!! nickname은 new라는 참조변수를 사용했기 때문에 ==을 사용하면 메모리주소를 비교한다.
if(mbr1.nickname.equals(mbr3.nickname)) { // 이것은 값비교
System.out.println(mbr1.nickname+ " 와 " +mbr3.nickname+ " 은 같습니다.");
}
else {
System.out.println(mbr1.nickname+ " 와 " +mbr3.nickname+ " 은 같지 않습니다.");
}
}
}
switch문
- if~else if문과 유사하다. 하지만 반복의 기준이 조건식이 아닌 특정 값이다.
- 기준값은 case의 수행문이며, 이와 일치하지 않으면 default에 해당하는 기본 수행문이 실행된다.
switch(기준값) {
case 비교값1:
수행문1;
case 비교값2:
수행문2;
default:
기본 수행문;
}
기본 형태는 위와 같다.
지정해준 값만 고려하면 되어서 개인적으로 가장 쉽게 느껴지는 문법이다.
실습 때 진행했던 성적처리 프로그램인데, 혼자 다시 작성해본 코드를 올리며 반복문을 마무리하겠다...!
package yeonsoupmoonjae.For;
public class Sungjuk {
String hakbun;
String name;
byte kor;
byte eng;
byte math;
boolean checkJumsu(byte jumsu) {
if( 0 <= jumsu && jumsu <=100) {
return true;
}
else {
System.out.println(">> [경고] 점수 입력은 0 이상 100 이하로 가능합니다. <<");
return false;
}
}// end of boolean checkJumsu(byte jumsu)
void showInfo() {
short total = (short) (kor+eng+math);
float avg = Math.round(total)/3.0F;
String hakjum = "";
if(90 >= avg) hakjum = "A";
else if(80 >= avg) hakjum = "B";
else if(70 >= avg) hakjum = "C";
else if(60 >= avg) hakjum = "D";
else hakjum ="F";
String gift = "";
switch (hakjum) {
case "A":
gift = "아이패드";
break;
case "B":
gift = "에어팟";
break;
case "C":
gift = "자바의 정석";
break;
case "D":
gift = "스타벅스 기프티콘";
break;
default:
gift = "사랑의 매";
break;
}// end of switch()---------------------------
System.out.println("====="+name+" 님의 성적정보=====\n"
+ "1. 학번 : "+ hakbun+"\n"
+ "2. 이름 : "+ name+"\n"
+ "3. 국어 : "+ kor+"\n"
+ "4. 영어 : "+ eng+"\n"
+ "5. 수학 : "+ math+"\n"
+ "5. 총점 : "+ total+"\n"
+ "6. 평균 : "+ avg+"\n"
+ "6. 학점 : "+ hakjum+"\n"
+ "7. 선물 : "+ gift
);
}// end of void showInfo()--------------------------
}
package yeonsoupmoonjae.For;
import java.util.Scanner;
public class SungjukMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Sungjuk yunhwan = new Sungjuk();
System.out.println("1. 학번 : ");
yunhwan.hakbun = sc.nextLine();
System.out.println("2. 성명 : ");
yunhwan.name = sc.nextLine();
try {
System.out.println("3. 국어 : ");
byte kor = Byte.parseByte(sc.nextLine());
if(yunhwan.checkJumsu(kor)) {
yunhwan.kor = kor;
}
else {
sc.close();
return;
}
System.out.println("4. 영어 : ");
yunhwan.eng = Byte.parseByte(sc.nextLine());
if(yunhwan.checkJumsu(kor)) {
yunhwan.kor = kor;
}
else {
sc.close();
return;
}
System.out.println("5. 수학 : ");
yunhwan.math = Byte.parseByte(sc.nextLine());
if(yunhwan.checkJumsu(kor)) {
yunhwan.kor = kor;
}
else {
sc.close();
return;
}
yunhwan.showInfo();
} catch(NumberFormatException e) {
System.out.println(">> [경고] 점수 입력은 0 이상 100 이하로 가능합니다. <<");
}
sc.close();
}// end of main(String[] args)---------------------------
}
다음엔 try~catch를 적용해서 예외처리까지 넣은 프로그램을 만들어보고싶다.
기능 하나씩 추가하고싶은 욕심이 들면 흥미도 더 생기고 의욕도 더 생기는 거 같다!
'개념정리 > JAVA' 카테고리의 다른 글
[JAVA] Day-7 _ 중첩 반복문 (0) | 2023.01.18 |
---|---|
[JAVA] Day-7 _ 반복문 (for, while, do~while) (0) | 2023.01.18 |
[JAVA] Day-5 _ Math Class로 반올림 (0) | 2023.01.12 |
[JAVA] Day-5 _ Wrapper 클래스 (2) | 2023.01.12 |
[JAVA] Day-4 _ 스캐너 (Scanner) (0) | 2023.01.11 |