반응형
16. PrinterExample 클래스에서 Printer 객체를 생성하고 println()메소드를 호출해서 매개값을 콘솔에 출력하려고 합니다. println() 메소드의 매개값으로는 int, boolean, double, String 값을 줄 수 있습니다. Printer 클래스에서 println() 메소드를 선언해보세요.
package print;
public class Printer {
void println(int a){
System.out.println(a);
}
void println(boolean b){
System.out.println(b);
}
void println(double c){
System.out.println(c);
}
void println(String d){
System.out.println(d);
}
}
package print;
public class PrinterExample {
public static void main(String[] args) {
Printer printer = new Printer();
printer.println(10);
printer.println(true);
printer.println(5.7);
printer.println("홍길동");
}
}
17. 16번 문제에서는 Printer 객체를 생성하고 println()메소드를 생성했습니다. Printer 객체를 생성하지 않고 PrinterExample클래스에서 다음과 같이 호출하려면 Printer 클래스를 어떻게 수정하면 될까요?
package print;
public class Printer {
public static void println(int a){
System.out.println(a);
}
public static void println(boolean b){
System.out.println(b);
}
public static void println(double c){
System.out.println(c);
}
public static void println(String d){
System.out.println(d);
}
}
package print;
public class PrinterExample {
public static void main(String[] args) {
Printer.println(10);
Printer.println(true);
Printer.println(5.7);
Printer.println("홍길동");
}
}
18. ShopService 객체를 싱글톤으로 만들고 싶습니다. ShopServiceExample 클래스에서 ShopService의 getInstance() 메소드로 싱글톤을 얻을 수 있도록 ShopService 클래스를 작성해보세요.
package shop;
public class ShopService {
private static ShopService shopService = new ShopService();
// public ShopService() {
// }
static ShopService getInstance(){
return shopService;
}
}
package shop;
public class ShopServiceExample {
public static void main(String[] args) {
ShopService obj1 = ShopService.getInstance();
ShopService obj2 = ShopService.getInstance();
if(obj1 == obj2){
System.out.println("같은 ShopService 객체입니다.");
}else{
System.out.println("다른 ShopService 객체입니다.");
}
}
}
19. 은행 계좌 객체인 Account 객체는 잔고(balance) 필드를 가지고 있습니다. balance 필드는 음수값이 될 수 없고, 최대 백만 원까지만 저장할 수 있습니다. 외부에서 balance 필드를 마음대로 변경하지 못하도록 하고, 0 <= balance <= 1,000,000 범위의 값만 가질 수 있도록 Account 클래스를 작성해보세요.
- getter와 setter를 이용하세요
- 0과 1,000,000은 MIN_BALANCE와 MAX_BALANCE 상수를 선언해서 이용하세요.
- setter의 매개값이 음수이거나 백만 원을 초과하면 현재 balance 값을 유지하세요.
public class Account {
//작성위치
private int balance;
private final int MIN_BALANCE = 0;
private final int MAX_BALANCE = 1000000;
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
if (balance >= MIN_BALANCE && balance <= MAX_BALANCE) {
this.balance = balance;
}
}
}
public class AccountExample {
public static void main(String[] args) {
Account account = new Account();
account.setBalance(10000);
System.out.println("현재 잔고: " + account.getBalance());
account.setBalance(-100);
System.out.println("현재 잔고: " + account.getBalance());
account.setBalance(2000000);
System.out.println("현재 잔고: " + account.getBalance());
account.setBalance(300000);
System.out.println("현재 잔고: " + account.getBalance());
}
}
20. 다음은 키보드로부터 계좌 정보를 입력받아서, 계좌를 관리하는 프로그램입니다. 실행 결과를 보고, 알맞게 BankApplication 클래스의 메소드를 작성해보세요.
public class Account {
private String ano;
private String owner;
private int balance;
public Account(String ano, String owner, int balance) {
this.ano = ano;
this.owner = owner;
this.balance = balance;
}
public Account() {
}
public String getAno() {
return ano;
}
public void setAno(String ano) {
this.ano = ano;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class BankApplication {
private static Account[] accountArray = new Account[100];
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
boolean run = true;
while (run) {
System.out.println("----------------------");
System.out.println("1.계좌생성|2.계좌목록|3.예금|4.출금|5.종료");
System.out.println("----------------------");
System.out.println("선택> ");
int selectNo = scanner.nextInt();
if (selectNo == 1) {
creatAcount();
} else if (selectNo == 2) {
accountList();
} else if (selectNo == 3) {
deposit();
} else if (selectNo == 4) {
withdraw();
} else if (selectNo == 5) {
run = false;
}
}
System.out.println("프로그램 종료");
}
//계좌 생성하기
private static void creatAcount() {
//작성위치
System.out.println("---계좌 생성---");
Account account = new Account();
System.out.println("계좌번호를 입력해주세요.");
account.setAno(scanner.next());
System.out.println("예금주명을 입력해주세요.");
account.setOwner(scanner.next());
System.out.println("잔고를 입력해주세요.");
account.setBalance(scanner.nextInt());
for (int i = 0; i < accountArray.length; i++) {
if (accountArray[i] == null) {
accountArray[i] = account;
}
}
System.out.println("계좌 생성 완료");
}
//계좌 목록 보기
private static void accountList() {
//작성위치
System.out.println("---계좌 목록---");
for (int i = 0; i < accountArray.length; i++) {
if (accountArray[i] != null) {
System.out.println(accountArray[i].getAno());
System.out.println(accountArray[i].getOwner());
System.out.println(accountArray[i].getBalance());
return;
}
}
}
//예금하기
private static void deposit() {
//작성위치
System.out.println("---예금---");
System.out.println("예금할 금액을 입력하세요.");
for (int i = 0; i < accountArray.length; i++) {
if (accountArray[i] != null) {
int presentBalance = accountArray[i].getBalance();
int addBalance = scanner.nextInt();
accountArray[i].setBalance(presentBalance + addBalance);
System.out.println("현재 잔액은 " + accountArray[i].getBalance());
return;
}
}
}
//출금하기
private static void withdraw() {
//작성위치
System.out.println("---출금---");
System.out.println("출금할 금액을 입력하세요.");
for (int i = 0; i < accountArray.length; i++) {
int presentBalance = accountArray[i].getBalance();
int addBalance = scanner.nextInt();
if (presentBalance > addBalance) {
accountArray[i].setBalance(presentBalance - addBalance);
} else {
System.out.println("잔액이 부족합니다.");
}
System.out.println("현재 잔액은 " + accountArray[i].getBalance());
return;
}
}
//Account 배열에서 ano와 동일한 Account 객체 찾기
private static Account findAccount(String ano) {
//작성위치
for (int i = 0; i < accountArray.length; i++) {
if (accountArray[i].getAno().equals(ano)) {
return accountArray[i];
}
}
return null;
}
}
반응형
'개념' 카테고리의 다른 글
[이것이 자바다] chapter.8 - 확인문제 (0) | 2023.02.01 |
---|---|
[이것이 자바다] chapter.7 - 확인문제 (0) | 2023.01.30 |
[이것이 자바다] chapter.6 확인 문제 - 1 (0) | 2023.01.20 |
[이것이 자바다] chapter.5 확인 문제 (0) | 2023.01.20 |
[이것이 자바다] chapter.4 확인 문제 (0) | 2023.01.19 |