Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
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
Archives
Today
Total
관리 메뉴

스포츠마케터의 초보 개발자 도전기

JAVA study 11 본문

develop/JAVA

JAVA study 11

teammate brothers 2024. 3. 12. 14:46

1. Setter and Getter

 

private으로 만들어진 변수에는 원래 다른 값으로 바꾸거나 넣을 수 없지만 stter/getter를 사용하면 보안도 높이고, 변경도 가능. 가져와서(get)사용시에도 쉽게 바꾸거나 할 수 없다.

package ex1_pokemon;

public class Poke {

	private String name = "";
	private String type = "";

	public String getType() { //게터는 대부분이 String, 파라미터는 없는 경우가 많음. 바꿀일이 없으면, 게터만 만들면 됨
		return type;
	}

	public void setType(String t) { //세터는 대부분이 void형
		type = t;
	}

	String getName() {
		return name;
	}

	public void setName(String n) {
		name = n;
	}

	public void myPoke() {
		System.out.println("이름 : " + name);
		System.out.println("타입 : " + type);
		System.out.println("------------------");
	}
}
package ex1_pokemon;

public class PokeMain {
	public static void main(String[] args) {

		Poke p1 = new Poke();
		p1.setName("피카츄");
		p1.setType("전기");
		p1.myPoke();

		Poke p2 = new Poke();
		p2.setName("꼬부기");
		p2.setType("물");
		p2.myPoke();

	}// main
}

 

 

2. 전역변수명과 파라미터의 지역변수명 지정

파라미터의 지역변수명을 다른사람도 알아 보기 쉽도록 지정하려면 전역변수명과 겹칠 경우가 많다.

이때 this를 사용하여 어느것이 전역변수인지 지정해주는 것이 좋다.

package ex2_person;

public class Person {

	private String school;
	private String name;
	private String phone;
	private int age;

	// Alt + Shift + s 단축키 -> Generate setters and getters

	public String getSchool() {
		return school;
	}

	public void setSchool(String school) {
		this.school = school;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	/*
	 * public int getAge() { return age; }
	 * 
	 * public void setAge(int age) { this.age = age; }
	 * 
	 * 
	 * // 출력만 하게 하려면 ↓ public String getSchool() { return school; }
	 * 
	 * // 입출력 모두 가능하려면 ↓ public String getName() { return name; }
	 * 
	 * public void setName(String n) { name = n; }
	 * 
	 * // 여러개 정보 한번에 입력 //파라미터 변수명을 다른 사람이 알아보기 쉽도록 지정하려면 전역변수명과 지역변수명이 겹칠 수 있음
	 * //그래서 this 사용! this : 현재 클래스 자신 public void setInfo(String name, int age) {
	 * this.name = name;
	 */
package ex2_person;

public class PersonMain {
	public static void main(String[] args) {
		
		Person p1 = new Person();
		p1.setName("홍길동");
		System.out.println(p1.getName());
		System.out.println(p1.getSchool());
		
	}//main
}

 

예제 1) ATM 만들기

package ex3_atm;

import java.util.Set;

public class Atm {

	private int money;


	// 입금
	public void deposit(int money) {
		this.money += money;
		System.out.println("입금성공");
	}

	// 출금
	public int withraw(int money) {
		if (this.money - money < 0 ) {
			System.out.println("잔액이 부족합니다.");
			return 0;
		}else {
			this.money -= money;
			System.out.println("출금성공");
			return money;
		}
	}

	// 잔액확인
	public void balance() {
		System.out.println("잔액 " + money);
	}

}
package ex3_atm;

import java.util.Scanner;

public class AtmMain {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		Atm atm = new Atm();

		int money = 0;

		outer: while (true) {

			System.out.println("1. 입   금");
			System.out.println("2. 출   금");
			System.out.println("3. 잔액확인");
			System.out.println("etc.종  료");
			System.out.print(">> ");
			int select = sc.nextInt();

			switch (select) {
			case 1:
				System.out.println("--입금--");
				System.out.print("입금액 : ");
				money = sc.nextInt();
				atm.deposit(money);
				break;

			case 2:
				System.out.println("--출금--");
				System.out.print("출금할 금액 : ");
				money = sc.nextInt();
				money = atm.withraw(money);
				break;

			case 3:
				System.out.println("잔액확인");
				atm.balance();
				break;

			default:
				System.out.println("이용해주셔서 감사합니다.");
				break outer;

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

	}// main
}

 

예제) UpDown 숫자 맞추기

package ex4_updown;

public class AnswerCheck {

	// 정답인지 오답인지 체크하는 함수

	public String answer(int answer, int rNum) {
		if (rNum > answer) {
			return "up";

		} else if (rNum < answer) {
			return "down";

		}
		return "";
	}

}
package ex4_updown;

import java.util.Random;
import java.util.Scanner;

public class UpDownMain {
	public static void main(String[] args) {

		AnswerCheck ans = new AnswerCheck();
		int rNum = new Random().nextInt(51);
		int count = 0;

		Scanner sc = new Scanner(System.in);

		out: while (true) {
			// 입력받은 값을 AnswerCheck에게 전달하고
			// Up이나 Down이 아닌 정답일 경우
			// 해당 while문을 빠져 나가자
			count++;
			System.out.print("맞춰보세요 : ");
			int answer = sc.nextInt();
			String str = ans.answer(answer, rNum);
			System.out.println(str);
			if (rNum == answer) {
				System.out.printf("%d회만에 정답", count);

				break out;
			}
		} // while

	}// main
}

 

예제) UpDown 숫자 맞추기 tCode

package ex4_updown;

import java.util.Random;

public class AnswerCheck {

	private int random = new Random().nextInt(50) + 1;
	private int count = 0;
	private boolean result = false;

	// 정답인지 오답인지 체크하는 함수
	public boolean check(int n) {
		count++;

		if (n < random) {
			System.out.println("UP");
		} else if (n > random) {
			System.out.println("DOWN");
		} else {
			System.out.println(count + "회 만에 정답!");
			result = true;
		}

		return result;
	}

}
package ex4_updown;

import java.util.Scanner;

public class UpDownMain {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		AnswerCheck ans = new AnswerCheck();

		while (true) {
			// 입력받은 값을 AnswerCheck에게 전달하고
			// Up이나 Down이 아닌 정답일 경우
			// 해당 while문을 빠져 나가자
			System.out.print("맞춰보세요 : ");
			int answer = sc.nextInt();
			boolean b = ans.check(answer);

			if (b) { //b == true라는 의미 (boolean 값만 해당) !b -> b == false
				break;

			}

		} // while

	}// main
}

 

Class로 배열 만들기

package ex5_class_array;

public class Person {
	
	private String name;
	private int age;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
		
	
}
package ex5_class_array;

public class PesonMain {

	public static void main(String[] args) {

		/*
		 * Person p = new Person(); p.setName("일길동"); p.setAge(20);
		 * 
		 * Person p2 = new Person(); p2.setName("이길동"); p2.setAge(21);
		 */

		Person[] p = new Person[2]; // 메모리 할당 전단계 (준비)

		// 명시적 객체생성 name/age 모두 한번에 생성(생성)
		for (int i = 0; i < p.length; i++) {
			p[i] = new Person();

		}

		p[0].setName("일길동");
		p[0].setAge(20);

		p[1].setName("이길동");
		p[1].setAge(21);

		// class로 만든 객체의 각 입력값을 출력
		for (int i = 0; i < p.length; i++) {
			System.out.println(p[i].getName() + " / " + p[i].getAge());
		}

	}// main

}

 

예제) 입력한 문자가 숫자만 있는지 판단

package ex6_isNumber;

public class NumberCheck {

	// 메인에서 받아온 문자열이 모두 숫자로만 이루어져 있는지 판단
	public boolean check(String num) {

		for (int i = 0; i < num.length(); i++) {
			char ch = num.charAt(i);

			if (ch < '0' || ch > '9') {
				return false;
			}

		}

		return true;
	}

}
package ex6_isNumber;

import java.util.Scanner;

public class NumberMain {
	public static void main(String[] args) {

		NumberCheck ch = new NumberCheck();

		Scanner sc = new Scanner(System.in);
		System.out.print("입력 : ");
		String nNum = sc.next();
		boolean b = ch.check(nNum);

		System.out.print(nNum + "은 숫자입니까? " + b);

	}// main
}

 

예제) 영화배우가 찍은 영화 찾기

package ex7_work;

import java.util.Scanner;

public class ActorMain {
	public static void main(String[] args) {

		// 검색할 배우 : kang
		// [kang]
		// 전우치
		// 의형제
		// 반도

		// 검색할 배우 : aaa
		// 해당 배우의 정보가 없습니다.

		String[][] actor = { { "[song]", "박쥐", "괴물", "관상" }, { "[lee]", "백두산", "광해", "지아이조" },
				{ "[kang]", "전우치", "의형제", "반도" } };

		// 배우 정보 입력받기
		Scanner sc = new Scanner(System.in);
		System.out.print("검색할 배우 : ");
		String act = sc.next();

		for (int i = 0; i < actor.length; i++) {

			for (int j = 0; j < actor[i].length; j++) {
				String change1 = actor[i][j].replace("]", "");
				String change2 = change1.replace("[", "");

				if (act.equals(change2)) {
					for (int k = 0; k < actor[i].length; k++) {
						System.out.println(actor[i][k]);

					} // for
					return;
				} // if

			} // inner

		} // outer
		System.out.println("해당배우의 정보가 없습니다.");

	}// main

}

 

예제) 영화배우가 찍은 영화 찾기 tCode

		Scanner sc = new Scanner(System.in);
		System.out.print("검색할 배우 : ");
		String act = sc.next();

		int cnt = 0;
		for (int i = 0; i < actor.length; i++) {
		
			if(actor[i][0].equals("["+act+"]")) {
				for(int j = 0; j<actor[i].length;j++) {
					System.out.println(actor[i][j]);
				}
			}else {
				
				cnt++;
				if(cnt == actor.length) {
				System.out.println("배우의 정보가 없어요");
				}
			}
			
		}

'develop > JAVA' 카테고리의 다른 글

JAVA study 13  (0) 2024.03.14
JAVA study 12  (0) 2024.03.13
JAVA study 10  (0) 2024.03.11
JAVA study 09  (0) 2024.03.08
JAVA study 08  (0) 2024.03.07