jnk1m
Foliage IT
jnk1m
전체 방문자
오늘
어제
  • 분류 전체보기 (209)
    • Today I Learned (34)
    • Java (47)
    • Database (15)
    • [NHN Academy] (27)
    • Spring (47)
    • HTML + CSS + JavaScript (11)
    • JSP (3)
    • Node.js (10)
    • React Native (2)
    • 기타 (8)
    • 스크랩 (5)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
jnk1m

Foliage IT

Java

JAVA 자바 컬렉션 연습 문제(1~7)

2022. 2. 28. 00:40

01.

package day12;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;

/*  HashMap
	id와 tel(전화번호)로 구성된 Student클래스를 만들고, 
	이름을 key로하고 Student 객체를 값으로 하는 HashMap을 작성해보세요. 
	5명 정도 HashMap에 미리 저장해놓고,  
	이름을 검색하면 id와 전화번호 출력되며, exit를 입력하면 프로그램 종료. 
*/

//class Student{	
//	String id, tel;
//	Student(){
//		Scanner sc = new Scanner(System.in);
//		System.out.println("ID와 Password를 입력하세요.");
//		System.out.println("ID: ");
//		id = sc.nextLine();
//		System.out.println("Tel: ");
//		tel = sc.nextLine();
//		
//		
//	}
//	@Override
//	public String toString() {
//		return "ID: " + id+ " Tel: "+tel;
//	}
//}

class Student{
	private String id, tel;
	Student(String id , String tel){
		this.id = id; this.tel = tel;
	}
	public String getId() {return id;}
	public String getTel() {return tel;} 
	
	
}


public class CollEx01 {
	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);
		HashMap studentbook = new HashMap();
		
		studentbook.put("김가희", new Student("rkgml", "010-1111-1111"));
		studentbook.put("이나희", new Student("skgml2", "010-2222-2222"));
		studentbook.put("박다희", new Student("ekgml3","010-3333-3333"));
		studentbook.put("한라희", new Student("fkgml4", "010-4444-4444"));
		studentbook.put("신마희", new Student("akgml5", "010-5555-5555"));


		while(true) {
			System.out.println("검색할 학생 이름 입력>> ");
			String name = sc.nextLine().trim();
			if(name.equals("exit")) { //종료할 키워드 먼저 생성
				System.out.println("프로그램 종료");
				break;
			}
			Student info = (Student) studentbook.get(name); 
			// 객체 스튜던트 타입의 변수 info에 name을 키로 갖는 것들을 담아준다.
			if(info == null) { //키값에 없는 이름이 입력되면 올바르지 않은 이름이라고 출력
				System.out.println("올바르지 않은 학생 이름 입니다.");
			}
			else{ //인포에 겟아이디. 겟텔해서 출력
				System.out.println(name + " 학생의 ID: " +info.getId()+
				" 전화번호: "+info.getTel());
			}
		}
		sc.close();
	}
}

 

 

02.

package day12;

import java.util.ArrayList;
import java.util.Scanner;

/* ArrayList
	Scanner 클래스로 -1이 입력될때까지 양의 정수를 입력받아 ArrayList에 저장하고, 
	ArrayList를 검색하여 가장 큰 수를 출력하는 프로그램을 작성하세요.
*/
public class CollEx02 {
	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);
		ArrayList<Integer> arr = new ArrayList<Integer>();
		
		while(true) {
			System.out.println("양의 정수 입력: ");
			int val = Integer.parseInt(sc.nextLine());
			if(val == -1) {
				System.out.println("시스템을 종료합니다.");
				break;
			}else {
				arr.add(val);
			}
		}
		int biggestIdx = 0;
		for(int i = 0; i<arr.size(); i++) {
			if(arr.get(biggestIdx) < arr.get(i)) {
				biggestIdx = i;
			}
		}System.out.println("가장 큰 수: "+ arr.get(biggestIdx));
	sc.close();
	}
}

03.

package day12;

import java.util.ArrayList;
import java.util.Scanner;

/*
	Scanner 클래스를 사용하여 6개 학점(학점단위 : 'A','B','C','D','F')을 문자로 입력받아
	ArrayList에 저장하고 ArrayList를 검색하여 학점을 
	점수(A=4.0, B=3.0, C=2.0, D=1.0, F=0)로 변환하여 
	평균을 출력하는 프로그램을 작성하세요. 
	콘솔예:
		6개의 학점을 띄어쓰기하여 입력하세요(A/B/C/D/F) >> A C A B F D  (사용자 입력)
		평균 : 2.333333333
		
*/
public class CollEx03 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		ArrayList<String> score = new ArrayList<String>();
		
		
		double tot=0;
		double rate =0;
		
		System.out.println("학점을 입력하세요>> ");
		for(int i =0; i< 6; i++) {
		String sco2 = sc.next();
		score.add(sco2);
		
		if(score.get(i).equals("A")) {
			rate = 4.0;
			tot += rate;
		}
		if(score.get(i).equals("B")) {
			rate = 3.0;
			tot += rate;
		}
		if(score.get(i).equals("C")) {
			rate = 2.0;
			tot += rate;
		}
		if(score.get(i).equals("D")) {
			rate = 1.0;
			tot += rate;
		}
		if(score.get(i).equals("F")) {
			rate = 0.0;
			tot += rate;
		}		
	}
	System.out.println("평균은: "+ (tot/score.size()));
		

sc.close();
	}

}

04.

package day12;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;

/*
	HashMap을 이용하여 학생이름과 자바 점수를 기록하는 관리 프로그램을 만드세요. 
	아래 프로그램 메뉴에서 각 번호로 서비스를 선택하고, 6번을 입력받으면 프로그램 종료. 
	*** 자바 성적 관리 프로그램 ***
	1. 전체 조회
	2. 등록
	3. 수정
	4. 삭제
	5. 전체 평균
	6. 프로그램 종료 
	
*/

public class CollEx04 {
	private Scanner sc;
	private HashMap<String, Integer> data;
	
	public CollEx04() {
		data = new HashMap<String, Integer>();
		sc = new Scanner(System.in);
	}
	
	
	private void show() {
		Iterator<String> it = data.keySet().iterator();
		if(it.hasNext()) {
			while(it.hasNext()) {
				String name = it.next();
				int score =data.get(name);
				System.out.println(name + " "+ score);
			}
		}else {
			System.out.println("저장된 학생 정보가 없습니다.");
		}
		System.out.println("*********************");
	}
	
	private void insertData() {
		System.out.println("이름>>");
		String name = sc.nextLine();
		System.out.println("점수>>");
		int score = Integer.parseInt(sc.nextLine().trim());
		Set<String> keys =data.keySet();
		if(keys.contains(name)) {
			System.out.println("이미 존재하는 학생입니다. 이름을 다시 입력해주세요.");
		insertData();
		}
		else {
			data.put(name, score);
			System.out.println("저장 완료");
		}
		System.out.println("*********************");
	}
	
	private void modifyData() {
		System.out.println("수정할 이름>>");
		String name = sc.nextLine().trim();
		Set<String> keys =data.keySet(); //key들 (이름들)만 뽑아서 
		if(keys.contains(name)) { //존재하는지 체크하고
			//존재하면 점수 입력받아 수정
			System.out.println("점수>>");
			int score = Integer.parseInt(sc.nextLine().trim());
			data.put(name, score); //key 값이 동일하면 수정처리 됨
			System.out.println("수정 완료");
		}
		else {
			System.out.println("존재하지 않는 학생입니다.");
		}
		System.out.println("*********************");
	}
	
	private void deleteData() {
		System.out.println("삭제할 이름>>");
		String name = sc.nextLine().trim();
		Set<String> keys =data.keySet(); //key들 (이름들)만 뽑아서 
		if(keys.contains(name)) { //존재하는지 체크하고
			data.remove(name);
			System.out.println("삭제 완료!");
		}
		else {
			System.out.println("존재하지 않는 학생입니다.");
		}
		System.out.println("*********************");
	}
	
	private void getAvg() {
		Collection<Integer> scores= data.values();
		Iterator<Integer> it= scores.iterator();
		int sum = 0;
		while(it.hasNext()) {
			int score = it.next();
			sum += score;
	}
		double avg = (double) sum/data.size();
		System.out.println("자바 평균 점수: "+avg);
		System.out.println("*********************");
	}
	
	private void finish () {
		System.out.println("프로그램을 종료합니다.");
		sc.close();
	}
	

	private void run() {
		while(true) {
		System.out.println("*** 자바 성적 관리 프로그램 ***\n"
				+ " 1. 전체 조회\n"
				+ "	2. 등록\n"
				+ "	3. 수정\n"
				+ "	4. 삭제\n"
				+ "	5. 전체 평균\n"
				+ "	6. 프로그램 종료 ");
		System.out.println("원하는 서비스 번호를 눌러주세요>>");
		int sel = Integer.parseInt(sc.nextLine().trim());
		if(sel == 1) show();
		else if (sel == 2) insertData();
		else if (sel == 3) modifyData();
		else if (sel == 4) deleteData();
		else if (sel == 5) getAvg();
		else if (sel == 6) {finish(); break;}
		else System.out.println("잘못된 서비스 번호 입력. 다시 입력해주세요.");
		
		
		}
	
		
	}

	public static void main(String[] args) {
		
		CollEx04 coll = new CollEx04();
		coll.run();

		}

}

 

05.

package day12;

import java.util.HashMap;
import java.util.Scanner;

/*
	"그만"이 입력될때까지 나라이름과 인구를 입력받아 저장하고,
	다시 나라이름을 입력받아 인구를 출력하는 프로그램을 작성하세요. 
	HashMap<String, Integer> nations = new HashMap<String, Integer>(); 여기에 저장. 
	실행예시:
		나라 이름과 인구를 입력하세요 (예 : Korea 5000). 
		나라이름, 인구 >>  Korea 5000  (<- 사용자 입력) 
		나라이름, 인구 >>  USA 100000
		나라이름, 인구 >>  Swiss 2000
		나라이름, 인구 >>  France 3000
		나라이름, 인구 >>  그만 
		인구 검색 >>  France
		France의 인구는 3000
		인구 검색 >> 스위스 
		스위스 나라는 없습니다. 
		인구 검색 >> 그만 
		프로그램 종료!!!
*/
public class CollEx05 {
	public static void main(String[] args) {
		HashMap<String, Integer> nations = new HashMap<String, Integer>();	
		Scanner sc = new Scanner(System.in);
		
		System.out.println("나라 이름과 인구를 입력하세요");
		while(true) {
			System.out.println("나라이름, 인구 >>");
			String input = sc.nextLine();
			if(input.equals("그만")) {
				break;}
			String[] splited = input.split(" ");
			nations.put(splited[0], Integer.parseInt(splited[1].trim()));
		}
//			String key = sc.next();
//			int val = Integer.parseInt(sc.next());
//			nations.put(key, val);
			
			while(true) {
				System.out.println("인구 검색>>");
				String keys = sc.nextLine().trim();
				if(keys.equals("그만")) {
					System.out.println("프로그램을 종료합니다.");
					break;}
				Integer popul = nations.get(keys);
				if(popul == null) System.out.println(keys + "나라는 없습니다.");
				else System.out.println(keys + "의 인구는 "+ popul);
			}
			
			/*
			if(key.equals("그만")) { //그만 입력하면 인구 검색 되는 부분이 안됨..
				System.out.println("인구 검색");
				String search = sc.nextLine();
				if(search.equals("그만")) {
					System.out.println("프로그램 종료");
					break;
				}
				Integer result = nations.get(search);
			}
		}*/
		
	}
}

중간에 주석처리된 부분은 내가 짠 코드들. 검색하는 부분이 안돼서 강사님 도움을 받았다.

처음에 내가 작성한 코드는 첫 while문 안에 나라 이름과 인구를 입력받는 영역 + if문으로 "그만" 입력하면 인구 검색을 시작하는 코드가 함께 들어가 있었다 while문이 돌아가면서 계속 스캐너 값을 받으니 첫 문자가 그만이라고 해서 바로 인구 검색을 시작하는 게 아니니 에러가 난거지.. 두 개의 while문으로 작성하니 해결 완료. 그리고 여러 개의 값을 입력받을 때는 어떻게 해야 하는지 잘 몰랐었는데 일단 스트링으로 받고 split 하여 배열로 저장하는 법을 배웠다.

 

06.

package day12;

import java.util.ArrayList;
import java.util.Scanner;

/*
	ArrayList 를 이용하여 강수량의 평균을 유지 관리하는 프로그램을 작성하세요. 
	강수량을 입력하면 ArrayList에 추가하고 현재 입력된 모든 강수량과 평균을 출력한다. 
	실행 예시 :
		강수량 입력 (-1 입력시 종료) >>  5 (<-사용자 입력) 
		5
		현재 평균 5
		강수량 입력 (-1 입력시 종료) >>	 80
		5 80 
		현재 평균 42
		강수량 입력 (-1 입력시 종료) >>  53
		5 80 53
		현재 평균 46
		강수량 입력 (-1 입력시 종료) >>  22
		5 80 53 22
		현재 평균 40 
		강수량 입력 (-1 입력시 종료) >>  -1
		프로그램 종료 
*/
public class CollEx06 {
	public static void main(String[] args) {
		ArrayList<Integer> rain = new ArrayList<Integer>();
		Scanner sc = new Scanner(System.in);
		int tot=0;
		while(true) {
			System.out.println("강수량 입력 (-1 입력시 종료) >> ");
			int rainVal = Integer.parseInt(sc.nextLine());
			if(rainVal == -1) {
				System.out.println("프로그램 종료");
				break;
			}
			rain.add(rainVal);
			tot+= rainVal;
			for(int i =0; i < rain.size(); i++) {
				System.out.print(rain.get(i)+" ");
			}
			System.out.println();
			System.out.println("현재 평균: " + (tot/rain.size() ));
			
		}
		
	}
}

 

07.

package day12;

import java.util.ArrayList;
import java.util.Scanner;

/*
 	하나의 학생 정보를 나타내는 StudentClass에는 이름, 학과, 학번, 학점평균을 저장하는 필드가 있다. 
 	학생마다 StudentClass 객체를 생성하고 4명의 학생정보를 
 	ArrayList 에 저장한 후, 모든 학생의 정보를 출력, 
 	학생이름을 입력받아 해당 학생의 학점 평균을 출력하는 프로그램을 작성하세요. 
 	실행예시:
 		학생이름, 학과, 학번, 학점 평균 입력하세요.
 		>> 아이언맨,빅데이터,1,4.25  (사용자 입력)
 		>> 데드풀,안드로이드,2,3.9
 		>> 호크아이,모바일,3,4.1
 		>> 헐크,웹개발,4,3.5
 		------------------------------------------
 		이름:아이언맨
 		학과:빅데이터
 		학번:1
 		학점평균:4.25
 		------------------------------------------
 		이름:데드풀
 		학과:안드로이드
 		학번:2
 		학점평균:3.9
 		------------------------------------------
 		이름:호크아이
 		학과:모바일
 		학번:3
 		학점평균:4.1
 		------------------------------------------
 		이름:헐크
 		학과:웹개발
 		학번:4
 		학점평균:3.5
 		------------------------------------------
 		학생 이름 >> 아이언맨   (사용자 입력)
 		아이언맨, 빅데이터, 1, 4.25
 		학생 이름 >> 호크아이 
 		호크아이, 모바일, 3, 4.1
 		학생 이름 >> 그만
 		프로그램 종료! 
*/
class StudentClass{
	//학생이름, 학과, 학번, 학점 평균 입력하세요.
	String name = ""; 
	String major = " ";
	int id=0;
	double ave = 0;
	StudentClass(String name, String major, int id, double ave) {
		this.name = name; this.major=major;this.id=id;this.ave=ave;
	}
	@Override
	public String toString() {
		return "이름:"+ name + "\n학과:"+ major + "\n학번:"+id+ "\n학점평균:"+ ave;
	}
}
public class CollEx07 {
	public static void main(String[] args) {

		ArrayList studentInfo = new ArrayList();
		Scanner sc= new Scanner (System.in);
		
		System.out.println("학생이름, 학과, 학번, 학점 평균 입력하세요.");
		for(int i = 0 ;i <4;i++) {
			String name = sc.next();
			String major = sc.next();
			int id = Integer.parseInt(sc.next());
			double ave = Double.parseDouble(sc.next());
			studentInfo.add(new StudentClass(name, major, id, ave));
			
		}
		for (int i = 0; i < studentInfo.size();i++) {
			System.out.println(studentInfo.get(i)+"\n");
		}
		
		String search = "";
		while(!search.equals("그만")) {
			System.out.println("학생 이름 >> ");
			search = sc.nextLine();
			for (int i = 0; i < studentInfo.size();i++) { //어레이리스트 안에 있는 객체 내부 내용을 어떻게 출력하지?
			if(studentInfo.contains(search)){ //이부분 쌤이 짜준 코드 다시봐!! 
				System.out.println(studentInfo.get(i));
			}
			}
		}
		
//		for (int i = 0; i < studentInfo.size();i++) {
//			System.out.println("학생 이름 >> ");
//			search = sc.nextLine();
//			if(studentInfo.contains(search)){
//				System.out.println(studentInfo.get(i));
//			}if(search.equals("그만"))break;
//		}
		
	}
}

 

070.

package day12;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class StudentClass02{
	private String name, department;
	private int id;
	private double grade;
	public StudentClass02(String name, String department, int id, double grade) {
		this.name = name; this.department = department; this.id = id; this.grade = grade;
	}
	public String getName() {return name;}
	public String getDepartment() {return department;}
	public int getId() {return id;}
	public double getGrade() {return grade;}
	
	public void setName(String name) {this.name = name;}
	public void setDepartment(String department) {this.department = department;}
	public void setId(int id) {this.id = id;}
	public void setGrade(double grade) {this.grade = grade;}
}

public class CollEx070 {
	private Scanner sc;
	private List<StudentClass02> list;
	public CollEx070() {
		sc = new Scanner(System.in);
		list = new ArrayList<StudentClass02>();
	}
	
	private void setList() {
		System.out.println("학생 이름, 학과, 학번, 학점 평균을 입력하세요.");
		for(int i =0; i<4 ; i++) {
			System.out.println((i+1)+ "번째 학생 >>");
			String [] text = sc.nextLine().split(",");
			String name = text[0].trim();
			String dept = text[1].trim();
			int id  = Integer.parseInt(text[2].trim());
			double grade = Double.parseDouble(text[3].trim());
			list.add(new StudentClass02(name, dept, id, grade));
		}

	}
	
	private void printAll() {
		System.out.println("*************");
		for(int i =0; i<list.size(); i++) {
			StudentClass02 s = list.get(i);
			System.out.println("이름: "+ s.getName());
			System.out.println("학과: "+ s.getDepartment());
			System.out.println("학번: "+ s.getId());
			System.out.println("학점평균: "+ s.getGrade()+"\n");
		}System.out.println("*************");
	}
	
	private void search() {
		while(true) {
			System.out.println("학생 이름으로 검색:");
			String input = sc.nextLine().trim();
			if(input.equals("그만")) {
				System.out.println("프로그램을 종료합니다.");
				break;
			}
			for(int i =0; i < list.size(); i++) {
				StudentClass02 s = list.get(i);
				if(s.getName().equals(input)) {
					System.out.println(s.getName()+ ", ");
					System.out.println(s.getDepartment()+ ", ");
					System.out.println(s.getId()+ ", ");
					System.out.println(s.getGrade()+ ", ");
					break;
				}
			}
			
		}
	}
	
	private void run() {
		setList();
		printAll();
		search();
	}
	
	public static void main(String[] args) {
		
		CollEx070 ex = new CollEx070();
		ex.run();

	}

}
    'Java' 카테고리의 다른 글
    • [스레드] - sleep, join, wait, interrupt, notify, notifyAll, yield
    • [스레드] 스레드 동기화, 동시성 제어
    • JAVA 자바 웹 개발 Day15 (Code)
    • JAVA 자바 웹 개발 Day15 (Note): 스트림, enum

    티스토리툴바