1. Scanner를 사용하여 5개의 실수 값을 사용자로부터 입력받아 벡터에 저장하라. 그러고 나서 벡터를 검색하여 가장 큰 수를 출력하는 프로그램을 작성하라.
코드
package chapter7;
import java.util.*;
public class VectorBig {
public static void main(String[] args) {
Vector<Double> v = new Vector<Double>();
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
double d = scanner.nextDouble();
v.add(d);
}
double max = v.get(0);
for(int i=0;i<5;i++){
if(max < v.get(i)) max = v.get(i);
}
System.out.println("가장 큰 수는 " + max);
}
}
실행결과
2. Scanner를 이용하여 학점(‘’, ‘’, ‘’, ‘’, ‘’)을 5개만 8자로 입력받아 ArrayList에 저장하라. 그리고 나서 다시 ArrayList를 검색하여 5개의 학점을 점수로 변환하여 출력하는 프로그램을 작성하라.
코드
package chapter7;
import java.util.*;
public class ArrayListCode {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
Scanner scanner = new Scanner(System.in);
System.out.print("빈 칸으로 분리하여 5개의 학점을 입력(A/B/C/D/F)>>");
for (int i = 0; i < 5; i++) {
String s = scanner.next();
al.add(s);
switch (s) {
case "A":
System.out.print("4.0" + " ");
break;
case "B":
System.out.print("3.0" + " ");
break;
case "C":
System.out.print("2.0" + " ");
break;
case "D":
System.out.print("1.0" + " ");
break;
case "F" :
System.out.print("0.0" + " ");
break;
}
}
}
}
실행결과
3. 5개의 나라 이름과 인구를 입력받아 해시맵에 저장하고, 가장 인구가 많은 나라를 검색하여 출력하는 프로그램을 작성하라. 이때 다음 해시맵을 이용하라.
코드
package chapter7;
import java.util.*;
public class HashMapNation {
public static void main(String[] args){
System.out.println("나라 이름과 인구를 5개 입력하세요(예 : Korea 5000)");
HashMap<String, Integer> h = new HashMap<String,Integer>();
Scanner scanner = new Scanner(System.in);
for(int i=0;i<5;i++){
System.out.print("나라 이름, 인구 >>");
String nation = scanner.next();
int population = scanner.nextInt();
h.put(nation,population);
}
int max = 0;
String nation = "";
Set<String> names = h.keySet();
Iterator<String> it = names.iterator();
while(it.hasNext()){
String name = it.next();
int n = h.get(name);
if(max < n){
max = n;
nation = name;
}
}
System.out.println("제일 인구가 많은 나라는 (" + nation +"," + max +")");
}
}
실행결과
4. 한 어린이의 키를 2000년부터 209년 사이에 1년 단위로 입력받아 벡터에 저장하라. 그리고 가장 키가 많이 자란 연도를 출력하라.
코드
package chapter7;
import java.util.*;
public class TallManager {
public static void main(String[] args){
Vector<Integer> v = new Vector<Integer>();
Scanner scanner = new Scanner(System.in);
System.out.println("2000 ~ 2009년 까지 1년단위로 키(cm)를 입력>>");
for(int i = 0; i <10;i++)
v.add(scanner.nextInt());
int max = v.get(1) - v.get(0);
int year = 0;
for(int i=0;i<9;i++){
int x = v.get(i+1) - v.get(i);
if(max<x){
max = x;
year = 2000 +i;
}
}
System.out.println("가장 키가 많이 자란 년도는 " + year + "년 " + max +"cm");
}
}
실행결과
5. Location 클래스는 2차원 평면에서 하나의 위치(x,y)를 표현한다. Location 객체로 쥐가 이동한 각 위치를 저장하고 이들로부터 총 이동 거리를 구하고자 한다. ArrayList 컬렉션에 쥐의 위치(Location 객체)를 5개 입력받아 삽입한 후 총 8이를 구하라. 시작위치는 (0,0)이며, (0,0)위치로 돌아온다.
코드
package chapter7;
import java.util.*;
class Location {
private int x, y;
public Location() {}
public Location(int x, int y) {this.x = x; this.y = y;}
public int getX() {return x;}
public int getY() {return y;}
}
public class TravelManager {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Location> al = new ArrayList<Location>();
System.out.println("쥐가 이동한 위치(x,y)를 5개 입력하라.");
al.add(new Location(0, 0));
for (int i = 0; i < 5; i++) {
System.out.print(">>");
al.add(new Location(scanner.nextInt(), scanner.nextInt()));
}
al.add(new Location(0, 0));
double sum, tz = 0;
for (int i = 1; i < al.size(); i++) {
Location p = al.get(i - 1);// 이전 위치
double x = p.getX();
double y = p.getY();
Location p2 = al.get(i);// 현재 위치
double x2 = p2.getX();
double y2 = p2.getY();
double tx = x2 - x;
double ty = y2 - y;
sum = (tx * tx) + (ty * ty); // 피타고라스 정리
tz = tz + Math.sqrt(sum); // 제곱근, 이동거리 누적
}
System.out.println("총 이동 거리는 " + tz);
}
}
실행결과
6. 고객의 이름과 포인트 점수를 관리하는 프로그램을 해시맵을 이용하여 작성하라. 이 프로그램은 고객의 이름과 포인트를 누적하여 관리한다. 한 고개의 입력이 끝나면 현재까지의 모든 고객의 포인트 점수를 출력한다.
코드
package chapter7;
import java.util.*;
public class CustomManager {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
HashMap<String, Integer> h = new HashMap<String, Integer>();
System.out.println("** 포인트 관리 프로그램입니다 **");
while (true) {
System.out.print("이름과 포인터 입력>>");
String name = scanner.next();
int point = scanner.nextInt();
if (h.containsKey(name)) {
h.put(name, h.get(name) + point);
} else {
h.put(name, point);
}
Set<String> key = h.keySet();
Iterator<String> it = key.iterator();
while (it.hasNext()) {
String n = it.next();
int p = h.get(n);
System.out.print("(" + n + "," + p + ")");
}
System.out.println();
}
}
}
실행결과
'자바 > 명품 자바 에센셜' 카테고리의 다른 글
명품 자바 에센셜 실습문제 8장 (4) | 2016.01.22 |
---|---|
명품 자바 에센셜 실습문제 6장 (2) | 2016.01.21 |
명품 자바 에센셜 실습문제 5장 (0) | 2016.01.21 |
명품 자바에센셜 실습문제 4장 (0) | 2016.01.18 |
명품 자바에센셜 실습문제 3장 (10) | 2016.01.18 |