스포츠마케터의 초보 개발자 도전기
JAVA study 11 본문
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 |