hyndb

명품 JAVA 7장 실습문제 본문

JAVA/명품 JAVA 실습문제

명품 JAVA 7장 실습문제

ttttki913 2023. 6. 9. 16:45
prac 7_1 Vector

public class Practice {
	public static void main(String[] args) {
		Vector<Integer> v = new Vector<>();
		Scanner scanner = new Scanner(System.in);
		System.out.print("정수(-1이 입력될때까지)>> ");
		
		while(true) {
			int n = scanner.nextInt();
			if( n == -1)
				break;
			else
				v.add(n);
		}
		int max = v.get(0); //맨 처음 인덱스를 최댓값으로
		for(int i = 1; i<v.size(); i++) {
			if (max < v.get(i)) {
				max = v.get(i);
			}
		}
		System.out.println("가장 큰 수는: " + max);
		scanner.close();
	}
}
prac 7_2 ArrayList

public class Practice {
	public static void main(String[] args) {
		ArrayList<Character> st = new ArrayList<>();
		Scanner scanner = new Scanner(System.in);
		System.out.print("6개의 학점을 빈 칸으로 분리 입력(A/B/C/D/F)>> ");

		for (int i = 0; i < 6; i++) {
			char c = scanner.next().charAt(0);
			st.add(c);
		}
		double sum = 0;
		for (int i = 0; i < st.size(); i++) {
			char c = st.get(i);
			switch (c) {
			case 'A':
				sum += 4;
				break;
			case 'B':
				sum += 3;
				break;
			case 'C':
				sum += 2;
				break;
			case 'D':
				sum += 1;
				break;
			case 'F':
				sum += 0;
				break;
			}
		}
		System.out.println(sum / st.size());
		scanner.close();
	}
}
prac 7_3 HashMap

public class Practice {
	public static void main(String[] args) {
		HashMap<String, Integer> nations = new HashMap<>();
		Scanner scanner = new Scanner(System.in);
		System.out.println("나라 이름과 인구를 입력하세요. (예: korea 5000) ");

		while(true) {
			System.out.print("나라 이름, 인구 >> ");
			String nation = scanner.next(); //입력받은 나라
			if(nation.equals( "그만")) 
				break;
			int population = scanner.nextInt(); //입력받은 인구 수
			nations.put(nation, population); //나라, 인구 수 hashmap nations에 put
		}
		
		while(true) { //인구 검색
			System.out.print("인구 검색 >> ");
			String nation = scanner.next();
			
			if(nation.equals("그만"))
				break;
			
			Integer n = nations.get(nation); //해시맵에서 키nations의 값 nation 검색
			if (n == null) 
				System.out.println(nation + "나라는 없습니다.");
			else
				System.out.println(nation + "의 인구는 " + n);
		}
		scanner.close();
	}
}
prac 7_4 Vector

public class Practice {
	public static void main(String[] args) {
		Vector<Integer> v = new Vector<>();
		Scanner scanner = new Scanner(System.in);
		
		while(true) {
			System.out.print("강수량 입력 (0 입력시 종료)>> ");
			int n = scanner.nextInt(); //입력받은 강수량
			if(n == 0) 
				break;
			v.add(n);
			
			int sum = 0;
			for(int i = 0; i<v.size(); i++) { //평균 구하기 위해 합 구하기
				System.out.print(v.get(i) + " ");
				sum += v.get(i);
			}
			System.out.println("\n현재 평균 " + sum/v.size());
		}
		scanner.close();
	}
}
prac 7_5_1 ArrayList

class Student {
	private String name, department, id;
	private double grade;

	public Student(String name, String department, String 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 String getId() {
		return id;
	}

	public double getGrade() {
		return grade;
	}
}

public class Practice {
	public static void main(String[] args) {
		ArrayList<Student> arr = new ArrayList<>();
		Scanner scanner = new Scanner(System.in);
		System.out.println("학생 이름, 학과, 학번, 학점평균을 입력하세요.");

		for (int i = 0; i < 4; i++) { // 학생 정보 입력, arraylist에 저장
			System.out.print(">> ");
			String s = scanner.nextLine();
			StringTokenizer st = new StringTokenizer(s, ","); // 입력받은 s를 콤마 단위로 토큰을 나누기
			String name = st.nextToken().trim();
			String department = st.nextToken().trim();
			String id = st.nextToken().trim();
			double grade = Double.parseDouble(st.nextToken().trim()); // string 타입이 아닌 int, double 은 parseint, parsedouble
			
			arr.add(new Student(name, department, id, grade)); // ArrayList arr에 student 객체 추가
		}
		
		System.out.println("-------------");
		for (int i = 0; i < 4; i++) { // arraylist arr 모든 정보 출력
			System.out.println("이름: " + arr.get(i).getName());
			System.out.println("학과: " + arr.get(i).getDepartment());
			System.out.println("학번: " + arr.get(i).getId());
			System.out.println("학점 평균: " + arr.get(i).getGrade());
			System.out.println("---------------");
		}

		while (true) { // 학생 이름 입력받고 학생 정보 출력
			System.out.print("학생 이름 >> ");
			String name = scanner.nextLine();
			if (name.equals("그만"))
				break;
			for (int i = 0; i < 4; i++) {
				Student student = arr.get(i);
				if (student.getName().equals(name)) {
					System.out.println(student.getName() + "," + student.getDepartment() + "," + student.getId() + ","
							+ student.getGrade());
					break;
				}
			}
		}
		scanner.close();
	}
}
prac 7_5_2 HashMap

class Student {
	private String name, department, id;
	private double grade;

	public Student(String name, String department, String 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 String getId() {
		return id;
	}

	public double getGrade() {
		return grade;
	}
}

public class Practice {
	public static void main(String[] args) {
		HashMap<String, Student> h = new HashMap<>();	//HashMap 객체 h 생성
		Scanner scanner = new Scanner(System.in);
		System.out.println("학생 이름, 학과, 학번, 학점평균을 입력하세요.");

		for (int i = 0; i < 4; i++) { // 학생 정보 입력, arraylist에 저장
			System.out.print(">> ");
			String s = scanner.nextLine();
			StringTokenizer st = new StringTokenizer(s, ","); // 입력받은 s를 콤마 단위로 토큰을 나누기
			String name = st.nextToken().trim();
			String department = st.nextToken().trim();
			String id = st.nextToken().trim();
			double grade = Double.parseDouble(st.nextToken().trim()); // string 타입이 아닌 int, double 은 parseint,
																		// parsedouble

			Student student = new Student(name, department, id, grade);
			h.put(name, student); // HashMap h에 student 객체 추가
		}

		System.out.println("-------------");
        
		Set<String> key = h.keySet();			//객체 정보 읽는 iterator 생성 
		Iterator<String> it = key.iterator();
		while (it.hasNext()) {
			for (int i = 0; i < 4; i++) { // arraylist arr 모든 정보 출력
				String name = it.next();
				Student student = h.get(name);
				System.out.println("이름: " + student.getName());
				System.out.println("학과: " + student.getDepartment());
				System.out.println("학번: " + student.getId());
				System.out.println("학점 평균: " + student.getGrade());
				System.out.println("---------------");
			}

		}

		while (true) { // 학생 이름 입력받고 학생 정보 출력
			System.out.print("학생 이름 >> ");
			String name = scanner.nextLine();
			if (name.equals("그만"))
				break;
			for (int i = 0; i < 4; i++) {
				Student student = h.get(name);
				if (student.getName().equals(name)) {
					System.out.println(student.getName() + "," + student.getDepartment() + "," + student.getId() + ","
							+ student.getGrade());
					break;
				}
			}
		}
		scanner.close();
	}
}
prac 7_6 HashMap

class Location {
	private String name;
	private int latitude, longitude;
	
	public Location(String name, int latitude, int longitude) {
		this.name = name;
		this.latitude = latitude;
		this.longitude= longitude;
	}
	
	public void show() {
		System.out.println(name + " " + latitude + " " + longitude);
	}
}

public class Practice {
	public static void main(String[] args) {
		HashMap<String, Location>  h = new HashMap<>();
		Scanner scanner = new Scanner(System.in);
		System.out.println("도시, 경도, 위도를 입력하세요. ");
		for(int i = 0; i< 4; i++) {
			System.out.print(">> "); //4개의 도시 입력받기
			String text = scanner.nextLine();
			
			StringTokenizer st = new StringTokenizer(text, ","); //stringtokenizer ,로 문자열 구분
			String name = st.nextToken();
			int latitude = Integer.parseInt(st.nextToken().trim());
			int longitude = Integer.parseInt(st.nextToken().trim());
			
			h.put(name , new Location(name, latitude, longitude)); //4개 도시 해시맵에 저장
		}
		Set<String> keys = h.keySet();
		Iterator<String> it = keys.iterator();
		System.out.println("-----------");
		
		while(it.hasNext()) { //해시맵 모든 정보 출력
			String name = it.next();
			Location s = h.get(name);
			s.show();
			System.out.println("-----------");
		}
		
		while(true) {
			System.out.print("도시 이름 >> ");
			String n = scanner.nextLine();
			
			if(n.equals("그만")) 
				break;
			if(h.get(n) != null ) //해시맵에 있으면
				h.get(n).show();
			else
				System.out.println(n + "는 없습니다.");
			
		}
		scanner.close();
	}
}
prac 7_7 HashMap

public class Practice {
	public static void main(String[] args) {
		HashMap<String, Double>  h = new HashMap<>();
		Scanner scanner = new Scanner(System.in);
		System.out.println("미래장학금 관리 시스템입니다.");
		
		for(int i = 0; i<5; i++) {
			System.out.print("이름과 학점 >> ");
			String name = scanner.next();
			double score = scanner.nextDouble();
			h.put(name, score);
		}
		System.out.print("장학금 선발 학점 기준 입력>> ");
		double fixScore = scanner.nextDouble(); 
		System.out.print("장학생 명단: ");
		
		Set<String> keys = h.keySet();
		Iterator<String> it = keys.iterator();
		
		while(it.hasNext()) { //해시맵 if에 해당하는 정보만 출력
			String name = it.next();
			double score = h.get(name);
			if(score > fixScore)
				System.out.print(name+ " ");
		}
		scanner.close();
	}
}
prac 7_8 HashMap

public class Practice {
	public static void main(String[] args) {
		HashMap<String, Integer> h = new HashMap<>();
		Scanner scanner = new Scanner(System.in);
		System.out.println("** 포인트 관리 프로그램입니다.  **");

		while (true) {
			System.out.print("이름과 포인트 입력>> ");
			String name = scanner.next();
			if (name.equals("그만"))
				break;

			int point = scanner.nextInt();
			if (h.get(name) == null) //입력 내용이 h에 없으면 추가
				h.put(name, point);
			else 					 //있으면 h 값 반환
				h.put(name, point + h.get(name));

			Set<String> keys = h.keySet();
			Iterator<String> it = keys.iterator();

			while (it.hasNext()) { // 해시맵 if에 해당하는 정보만 출력
				String st = it.next();
				System.out.print("(" + st + "," + h.get(st) + ")");
			}
			System.out.println();
		}
		scanner.close();
	}
}
prac 7_9 Stack

interface IStack<T> {
	T pop();
	boolean push(T ob);
}

class MyStack<T> implements IStack<T> {
	private Vector<T> v;
	private int size;
	
	public MyStack () {
		v =new Vector<>();
		size = -1;
	}
	public T pop() { //interface 오버라이딩
		if(size == -1) return null;
		return v.get(size--);
	}
	public boolean push(T ob) {
		v.add(ob);
		size++;
		return true;
	}
	
}

public class Practice {
	public static void main(String[] args) {
		IStack<Integer> stack = new MyStack<Integer>();
		for (int i = 0; i< 10; i++) stack.push(i);
		while(true) {
			Integer n = stack.pop();
			if(n == null) break;
			System.out.print(n + " ");
		}
		
	}
}
prac 7_10 Vector

abstract class Shape {
	private Shape next;

	public Shape() {
		next = null;
	}

	public void setNext(Shape obj) {
		next = obj;
	}

	public Shape getNext() {
		return next;
	}

	public abstract void draw();
}

class Line extends Shape {
	public void draw() {
		System.out.println("Line");
	}
}

class Rect extends Shape {
	public void draw() {
		System.out.println("Rect");
	}
}

class Circle extends Shape {
	public void draw() {
		System.out.println("Circle");
	}
}

public class Practice {
	public static void main(String[] args) {
		System.out.println("그래픽 에디터 beauty를 실행합니다.");
		Vector<Shape> v = new Vector<>();
		Scanner scanner = new Scanner(System.in);

		while (true) {
			System.out.print("삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>");
			int n = scanner.nextInt();

			switch (n) {
			case 1:
				System.out.print("Line(1), Rect(2), Circle(3)>>");
				int choice = scanner.nextInt();
				switch (choice) {
				case 1:
					v.add(new Line());
					break;
				case 2:
					v.add(new Rect());
					break;
				case 3:
					v.add(new Circle());
					break;
				}
				continue;
			case 2:
				System.out.print("삭제할 도형의 위치 >>");
				int index = scanner.nextInt();
				if ( v.size() <= index)
					System.out.println("삭제할 수 없습니다.");
				else 
					v.remove(index);
				break;
			case 3:
				for (int i = 0; i < v.size(); i++)
					v.get(i).draw();
				break;
			case 4:
				System.out.println("beauty를 종료합니다.");
				scanner.close();
				return;
			}
		}
	}
}
prac 7_11_1 
f*ck

 

'JAVA > 명품 JAVA 실습문제' 카테고리의 다른 글

명품 JAVA 2장 실습문제  (0) 2023.07.25
명품 JAVA 9장 실습문제  (0) 2023.07.09
명품 JAVA 8장 실습문제  (0) 2023.06.10
명품 JAVA 6장 실습문제  (0) 2023.06.06
명품 JAVA 5장 실습문제  (0) 2023.06.06