1)
public class Member { //회원클래스
private String name; //이름
private int no; //회원번호
private String id; //아이디
private String password;//비밀번호
private int age; //나이
private String addr; //주소
public Member(String name, int no, String id, String addr, int age) {
this.name = name;
this.no = no;
this.id = id;
this.addr = addr;
this.age = age;
}
public String getName() { return name; }
public int getNo() { return no; }
public String getId() { return id; }
public String getPassword() { return password; }
public int getAge() { return age; }
public String getAddr() { return addr; }
public void setName(String name) { this.name = name; }
public void setNo(int no) { this.no = no; }
public void setId(String id) { this.id = id; }
public void setPassword(String password) { this.password = password; }
public void setAge(int age) { this.age = age; }
public void setAddr(String addr) { this.addr = addr; }
}
import java.util.*;
public class MemberMain {
public static void main(String[] args) {
/*
list 인터페이스를 사용하여 Member 클래스를 원소로 다룰수 있는 구현 객체
ArrayList를 대입하여보세요. 이때 인터페이스의 이름은 mList입니다
*/
List<Member> mList = new ArrayList<Member>();
/*
mList 인터페이스를 통하여 ArrayList 객체에 Member 원소 객체를 2개 추가하세요
Member 정보)
String name, int no, String id, String addr, int age
*/
mList.add(new Member("홍길동", 100, "hong001", "경기도 파주시",24));
mList.add(new Member("김길동", 200, "kim001", "인천광역시",34));
/*
인덱스가 0번인 Member 객체의 비밀번호(password) 필드 값을 "1234"로 수정
인덱스가 1번인 Member 객체의 비밀번호(password) 필드 값을 "5678"로 수정
mList 인터페이스를 통해서
*/
mList.get(0).setPassword("1234");
mList.get(1).setPassword("5678");
System.out.println(mList.get(0).getPassword());
System.out.println(mList.get(1).getPassword());
mList.add(new Member("홍길동", 300, "hong002", "경기도 파주시",26));
/*
mList 인터페이스를 통하여 컬렉션의 모든 Member의 이름과 아이디를 콘솔에 출력
*/
//향상된 for문
for(Member m : mList) {
System.out.println(m.getName() + " : " + m.getId());
}
System.out.println();
//일반 for문
for(int i = 0; i < mList.size(); i++) {
Member m = mList.get(i);
System.out.println(m.getName() + " : " + m.getId());
}
/*
mList 인터페이스의 구현 컬렉션 객체에 담겨있는 Member들 중
주소가 전북 전주시 덕진구에 사는 회원이 몇명인지 계산하는 코드를 작성
*/
int count = 0;
//향상된 for문
for(Member m : mList) {
if(m.getAddr().equals("경기도 파주시")) {
count++;
}
}
System.out.println("경기도 파주시에 사는 회원: " + count);
//일반 for문
count = 0;
for(int i = 0; i < mList.size(); i++) {
Member m = mList.get(i);
if(m.getAddr().equals("경기도 파주시")) {
count++;
}
}
System.out.println("경기도 파주시에 사는 회원: " + count);
//mList 인터페이스를 통하여 컬렉션 구현객체의 원소들 중 아이디에 h가 포함된 회원명과 회원 수를 출력
count = 0;
//.contains() 사용 :: 포함시 true
for(Member m : mList) {
if(m.getId().contains("h")) {
System.out.println(m.getId());
count++;
}
}
System.out.println("id에 h가 포함된 회원 수: " + count);
count = 0;
//.indexOf() 사용 :: 포함시 인덱스 번호 반환
for(Member m : mList) {
if(m.getId().indexOf("h") >= 0) {
System.out.println(m.getId());
count++;
}
}
System.out.println("id에 h가 포함된 회원 수: " + count);
}
}
2) <학급점수 계산 프로그램 만들기>
아래 실행 예를 참고하여 구현해보세요.
실행 예)
------------------------------------------------------------------
1.점수입력 | 2. 점수목록확인 | 3. 점수 제거 | 4.계산 결과 | 5. 종료
-----------------------------------------------------------------
입력> 1
점수입력 > 99
------------------------------------------------------------------
1.점수입력 | 2. 점수목록확인 | 3. 점수 제거 | 4.계산 결과 | 5. 종료
-----------------------------------------------------------------
입력> 1
점수입력 > 70
------------------------------------------------------------------
1.점수입력 | 2. 점수목록확인 | 3. 점수 제거 | 4.계산 결과 | 5. 종료
-----------------------------------------------------------------
입력> 1
점수입력 > 80
------------------------------------------------------------------
1.점수입력 | 2. 점수목록확인 | 3. 점수 제거 | 4.계산 결과 | 5. 종료
-----------------------------------------------------------------
입력> 2
점수 목록 : 99, 70, 80
------------------------------------------------------------------
1.점수입력 | 2. 점수목록확인 | 3. 점수 제거 | 4.계산 결과 | 5. 종료
-----------------------------------------------------------------
입력> 3
제거 점수 인덱스 > 1
------------------------------------------------------------------
1.점수입력 | 2. 점수목록확인 | 3. 점수 제거 | 4.계산 결과 | 5. 종료
-----------------------------------------------------------------
입력> 2
점수 목록 : 99, 80
------------------------------------------------------------------
1.점수입력 | 2. 점수목록확인 | 3. 점수 제거 | 4.계산 결과 | 5. 종료
-----------------------------------------------------------------
입력> 4
총합 : 179
평균 : 89.5
------------------------------------------------------------------
1.점수입력 | 2. 점수목록확인 | 3. 점수 제거 | 4.계산 결과 | 5. 종료
-----------------------------------------------------------------
입력> 5
프로그램 종료
import java.util.*;
public class Grade {
public static void main(String[] args) {
List<Integer> score = new ArrayList<>();
Scanner sc = new Scanner(System.in);
int sum = 0;
while(true) {
System.out.println("-----------------------------------------------");
System.out.println("1.점수입력 | 2. 점수목록확인 | 3. 점수 제거 | 4.계산 결과 | 5. 종료");
System.out.println("-----------------------------------------------");
System.out.print("입력>");
String choice = sc.next();
if(choice.equals("1")) {
System.out.print("점수입력>");
score.add(sc.nextInt());
}else if(choice.equals("2")) {
String scoreList = "";
for(int i = 0; i < score.size(); i++) {
scoreList += score.get(i) + ",";
}
scoreList = scoreList.substring(0, (scoreList.length()-1));
System.out.println("점수 목록:" + scoreList);
/*
for(int i = 0; i < score.size(); i++){
System.out.print(scores.get(i));
if(i < score.size()-1){
System.out.print(",");
}
}
System.out.println();
*/
}else if(choice.equals("3")) {
System.out.print("제거 점수 인덱스>");
score.remove(sc.nextInt());
}else if(choice.equals("4")) {
for(int i = 0; i < score.size(); i++) {
sum += score.get(i);
}
System.out.println("총합:" + sum);
System.out.println("평균:" + (double)sum/score.size());
}else if(choice.equals("5")) {
System.out.print("프로그램 종료");
break;
}
}
}
}
3) <문자열 검색 프로그램 만들기>
아래 실행 예를 참고하여 구현해보세요.
실행 예)
------------------------------------------------------------------------------------
1.문자열 입력 | 2. 문자열 목록 확인 | 3. 문자열 검색 | 4.문자열 데이터 삭제 | 5. 종료
------------------------------------------------------------------------------------
입력>1
문자열> apple
저장되었습니다.
------------------------------------------------------------------------------------
1.문자열 입력 | 2. 문자열 목록 확인 | 3. 문자열 검색 | 4.문자열 데이터 삭제 | 5. 종료
------------------------------------------------------------------------------------
입력>1
문자열>grape
저장되었습니다.
------------------------------------------------------------------------------------
1.문자열 입력 | 2. 문자열 목록 확인 | 3. 문자열 검색 | 4.문자열 데이터 삭제 | 5. 종료
------------------------------------------------------------------------------------
입력>1
문자열> apple
저장되었습니다.
------------------------------------------------------------------------------------
1.문자열 입력 | 2. 문자열 목록 확인 | 3. 문자열 검색 | 4.문자열 데이터 삭제 | 5. 종료
------------------------------------------------------------------------------------
입력>2
문자열 목록 : apple, grape, apple
------------------------------------------------------------------------------------
1.문자열 입력 | 2. 문자열 목록 확인 | 3. 문자열 검색 | 4.문자열 데이터 삭제 | 5. 종료
------------------------------------------------------------------------------------
입력>3
검색문자열 >apple
apple 데이터는 총 2개 존재합니다.
------------------------------------------------------------------------------------
1.문자열 입력 | 2. 문자열 목록 확인 | 3. 문자열 검색 | 4.문자열 데이터 삭제 | 5. 종료
------------------------------------------------------------------------------------
입력>4
제거문자열>apple
apple은 총 2개 제거되었습니다.
------------------------------------------------------------------------------------
1.문자열 입력 | 2. 문자열 목록 확인 | 3. 문자열 검색 | 4.문자열 데이터 삭제 | 5. 종료
------------------------------------------------------------------------------------
입력>5
종료되었습니다.
import java.util.*;
public class StringList {
public static void main(String[] args) {
List<String> str = new ArrayList<>();
Scanner sc = new Scanner(System.in);
int count = 0;
while(true) {
System.out.println("-----------------------------------------------");
System.out.println("1.문자열 입력 | 2. 문자열 목록 확인 | 3. 문자열 검색 | 4.문자열 데이터 삭제 | 5. 종료");
System.out.println("-----------------------------------------------");
System.out.print("입력>");
int choice = sc.nextInt();
if(choice == 1) {
System.out.print("문자열>");
str.add(sc.next());
System.out.println("저장되었습니다.");
}else if(choice == 2) {
String strList = "";
for(int i = 0; i < str.size(); i++) {
strList += str.get(i) + ",";
}
strList = strList.substring(0, (strList.length()-1));
System.out.println("문자열 목록:" + strList);
/*
for(int i = 0; i < str.size(); i++){
System.out.print("문자열 목록:" + str.get(i));
if(i < str.size()-1){
System.out.print(",");
}
}
System.out.println();
*/
}else if(choice == 3) {
System.out.print("검색문자열>");
String search = sc.next();
for(String s : str) {
if(s.equals(search)) {
count++;
}
}
System.out.println(search + " 데이터는 총 " + count + "개 존재합니다.");
}else if(choice == 4) {
count = 0;
System.out.print("제거문자열>");
String search = sc.next();
// for(int i = 0; i < str.size(); i++) {
for(int i = str.size()-1; i >= 0; i--) {
String s = str.get(i);
if(s.equals(search)) {
count++;
str.remove(i);
}
}
System.out.println(search + "은 총 " + count + "개 제거되었습니다.");
/*
count = 0;
boolean result = true;
while(result) {
result = str.remove(search);
if(result) {
count++;
}
}
System.out.println(search + "은 총 " + count + "개 제거되었습니다.");
*/
}else if(choice == 5) {
System.out.println("종료되었습니다.");
break;
}
}
}
}
오류처리)
else if(choice == 4) {
count = 0;
System.out.print("제거문자열>");
String search = sc.next();
for(int i = 0; i < str.size(); i++) {
String s = str.get(i);
if(s.equals(search)) {
count++;
str.remove(i);
}
}
System.out.println(search + "은 총 " + count + "개 제거되었습니다.");
}
기존 위 소스코드로 동작시킬 경우 연달아 작성된 "apple","apple","grape"의 경우는 apple 1개만 제거되는 오류가 발생함
이유는 for문을 돌면서 remove하고 앞의 인덱스가 삭제되면서 뒤의 인덱스가 앞으로 당겨지기 때문에 삭제된 객체 바로 뒤의 객체는 검증하지 못하고 건너뛰게 되기 때문이다
이를 방지하기 위해 for문을 역순으로 돌리면 문제없이 전부 제거된다.
else if(choice == 4) {
count = 0;
System.out.print("제거문자열>");
String search = sc.next();
for(int i = str.size()-1; i >= 0; i--) {
String s = str.get(i);
if(s.equals(search)) {
count++;
str.remove(i);
}
}
System.out.println(search + "은 총 " + count + "개 제거되었습니다.");
}
4) <계좌관리 프로그램 만들기>
아래 실행 예를 참고하여 구현해보세요.
실행 예)
--------------------------------------------------------------------
1.계좌 생성 | 2. 계좌 검색 | 3. 입금 | 4. 출금 | 5.계좌 삭제 | 6. 종료
--------------------------------------------------------------------
입력>1
계좌번호> 111-111
계좌주> 홍길동
초기입금액>100
계좌가 개설되었습니다.
--------------------------------------------------------------------
1.계좌 생성 | 2. 계좌 검색 | 3. 입금 | 4. 출금 | 5.계좌 삭제 | 6. 종료
--------------------------------------------------------------------
입력>1
계좌번호> 111-222
계좌주> 이길동
초기입금액>1000
계좌가 개설되었습니다.
--------------------------------------------------------------------
1.계좌 생성 | 2. 계좌 검색 | 3. 입금 | 4. 출금 | 5.계좌 삭제 | 6. 종료
--------------------------------------------------------------------
입력>2
계좌번호>111-111
계좌번호: 111-111
계좌주: 홍길동
잔고:100
--------------------------------------------------------------------
1.계좌 생성 | 2. 계좌 검색 | 3. 입금 | 4. 출금 | 5.계좌 삭제 | 6. 종료
--------------------------------------------------------------------
입력>2
계좌번호>111-333
존재하지 않는 계좌번호 입니다.
--------------------------------------------------------------------
1.계좌 생성 | 2. 계좌 검색 | 3. 입금 | 4. 출금 | 5.계좌 삭제 | 6. 종료
--------------------------------------------------------------------
입력>3
계좌번호> 111-222
입금액>1000
이길동 계좌에 입금되었습니다.
--------------------------------------------------------------------
1.계좌 생성 | 2. 계좌 검색 | 3. 입금 | 4. 출금 | 5.계좌 삭제 | 6. 종료
--------------------------------------------------------------------
입력>4
계좌번호> 111-111
출금액>1000
홍길동 계좌 잔액부족입니다.
--------------------------------------------------------------------
1.계좌 생성 | 2. 계좌 검색 | 3. 입금 | 4. 출금 | 5.계좌 삭제 | 6. 종료
--------------------------------------------------------------------
입력>4
계좌번호> 111-111
출금액>90
홍길동 계좌에서 출금되었습니다.
--------------------------------------------------------------------
1.계좌 생성 | 2. 계좌 검색 | 3. 입금 | 4. 출금 | 5.계좌 삭제 | 6. 종료
--------------------------------------------------------------------
입력>5
계좌번호> 111-111
계좌주>이길동
계좌번호와 계좌주가 일치하지 않아 삭제할 수 없습니다.
--------------------------------------------------------------------
1.계좌 생성 | 2. 계좌 검색 | 3. 입금 | 4. 출금 | 5.계좌 삭제 | 6. 종료
--------------------------------------------------------------------
입력>5
계좌번호> 111-111
계좌주>홍길동
홍길동님의 111-111 계좌가 삭제되었습니다.
--------------------------------------------------------------------
1.계좌 생성 | 2. 계좌 검색 | 3. 입금 | 4. 출금 | 5.계좌 삭제 | 6. 종료
--------------------------------------------------------------------
입력>6
프로그램 종료
public class User {
private String no; //계좌번호
private String name; //이름
private int money; //돈
public User(String no, String name, int money){
this.no = no;
this.name = name;
this.money = money;
}
public String getNo() { return no; }
public String getName() { return name; }
public int getMoney() { return money; }
public void setNo(String no) { this.no = no; }
public void setName(String name) { this.name = name; }
public void setMoney(int money) { this.money = money; }
}
import java.util.*;
public class Account {
public static void main(String[] args) {
List<User> bank = new ArrayList<>();
Scanner sc = new Scanner(System.in);
String account = "";
String name = "";
User u;
int money = 0;
while(true) {
System.out.println("-----------------------------------------------");
System.out.println("1.계좌 생성 | 2. 계좌 검색 | 3. 입금 | 4. 출금 | 5.계좌 삭제 | 6. 종료");
System.out.println("-----------------------------------------------");
System.out.print("입력>");
int choice = sc.nextInt();
switch(choice) {
case 1 :
System.out.print("계좌번호>");
account = sc.next();
System.out.print("계좌주>");
name = sc.next();
System.out.print("초기입금액:");
money = sc.nextInt();
u = new User(account,name,money);
bank.add(u);
System.out.println("계좌가 개설되었습니다.");
break;
case 2 :
System.out.print("계좌번호>");
account = sc.next();
boolean isAccount = false;
for(int i = 0; i < bank.size(); i++) {
if(bank.get(i).getNo().equals(account)) {
System.out.println("계좌번호>" + bank.get(i).getNo());
System.out.println("계좌주:" + bank.get(i).getName());
System.out.println("잔고:" + bank.get(i).getMoney());
isAccount = true;
break;
}
}
if(!isAccount) {
System.out.println("존재하지 않는 계좌번호입니다.");
}
break;
case 3 :
System.out.print("계좌번호>");
account = sc.next();
for(int i = 0; i < bank.size(); i++) {
if(bank.get(i).getNo().equals(account)) {
money = bank.get(i).getMoney();
System.out.print("입금액>");
bank.get(i).setMoney(money + sc.nextInt());
System.out.println(bank.get(i).getName() + " 계좌에 입금되었습니다.");
break;
}
}
break;
case 4 :
System.out.print("계좌번호>");
account = sc.next();
for(int i = 0; i < bank.size(); i++) {
if(bank.get(i).getNo().equals(account)) {
System.out.print("출금액>");
money = sc.nextInt();
if(money <= bank.get(i).getMoney()) {
bank.get(i).setMoney(bank.get(i).getMoney() - money);
System.out.println(bank.get(i).getName() + " 계좌에서 출금되었습니다.");
break;
}else {
System.out.println(bank.get(i).getName() + " 계좌 잔액부족입니다.");
break;
}
}
}
break;
case 5 :
System.out.print("계좌번호>");
account = sc.next();
System.out.print("계좌주>");
name = sc.next();
for(int i = 0; i < bank.size(); i++) {
if(bank.get(i).getNo().equals(account) && bank.get(i).getName().equals(name)) {
bank.remove(i);
System.out.println(name+"님의 " + account + " 계좌가 삭제되었습니다.");
break;
}else {
System.out.println("계좌번호와 계좌주가 일치하지 않아 삭제할 수 없습니다.");
break;
}
}
break;
case 6 :
System.out.println("프로그램 종료");
break;
default : System.out.println("잘못입력하셨습니다."); break;
}
}
}
}
'Java' 카테고리의 다른 글
[Java] set 연습 (0) | 2024.08.24 |
---|---|
[Java] Set, Iterator (0) | 2024.08.22 |
[Java] 컬렉션 프레임워크 (0) | 2024.08.16 |
[Java] 제네릭 타입 (0) | 2024.08.15 |
[Java] 제네릭 (0) | 2024.08.14 |