1. 아래와 같이 양수를 입력받아 저장하고, 가장 큰 수를 출력하는 프로그램을 작성하여라.
단, Scanner 클래스로 -1이 입력되면 종료되어 큰 수가 출력된다.
· 참고

· 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
class Link{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> list = new LinkedList<>();
int max = 0;
System.out.println("정수를 입력해주세요(-1은 stop)");
while(true) {
Integer num;
num = sc.nextInt();
list.add(num);
if(num == -1)
break;
for(int e : list) {
if(max < e)
max = e;
}
}System.out.println("가장 큰 수는 " + max);
}
}
|
cs |
2. Scanner 클래스를 사용하여 6개 학점('A', 'B', 'C', 'D', 'F')을 입력받아 ArrayList에 저장하고,
ArrayList를 검색하여 학점을 점수(A=4.0, B=3.0, C=2.0, D=1.0, F=0)로 변환하여 평균을 출력하는 프로그램을 작성하라.
· 참고

· 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
class Grade{
private double sum;
private double avg;
List<String> list;
Grade(){
}
public void input() {
list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
System.out.println("성적을 입력해주세요");
for(int i = 0; i < 6; i++) {
String grade = sc.next();
list.add(grade);
switch(grade) {
case "A" :
sum += 4.0;
break;
case "B" :
sum += 3.0;
break;
case "C" :
sum += 2.0;
break;
case "D" :
sum += 1.0;
break;
case "F" :
sum += 0;
break;
}
}
}
public void output() {
double avg = sum / list.size();
System.out.println("총점은 " + sum);
System.out.println("평균은 " + avg);
}
}
|
cs |
1
2
3
4
5
6
7
|
class Grademain {
public static void main(String[] args) {
Grade gr = new Grade();
gr.input();
gr.output();
}
}
|
cs |
3. 로또 프로그램을 작성하시오. (Set으로)
1
2
3
4
5
6
7
8
9
|
class Lotto {
public static void main(String[] args) {
Set<Integer> set = new HashSet<Integer>();
while(set.size() < 6) {
set.add((int)(Math.random() * 45) + 1);
}
System.out.println(set);
}
}
|
cs |
4. 출력이 아래와 같이 나오도록 하시오. **필수**
· 참고

· 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
class Num {
private int num;
public Num(int n) {
num = n;
}
@Override
public String toString() {
return String.valueOf(num);
}
@Override
public int hashCode() {
return num % 3;
}
@Override
public boolean equals(Object obj) {
if(num == ((Num2)obj).num)
return true;
else
return false;
}
}
|
cs |
※위 코드에서 public int hashCode() 주석 처리 시 3개의 값이 출력되는 이유?
· hashCode를 통해 분류되는 주소값을 가진 군집에 객체들이 분류되어야 하는데 주석 처리 시 주소값이
생성되지않기 때문에 분류가 이루어지지 않아 3개의 값이 출력된다.
5. 아래와 같이 출력되도록 하시오.
· 참고

· 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
class Person {
private String name;
private int age;
Person(String name, int age){
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + "(" + age + "세)";
}
@Override
public int hashCode() {
return age % 3;
//3으로 나누지 않아도 ok!! age로 분류되서 이름이 같지 않으면 또 분류되기 때문!
//equals에서 이름, 나이 둘 다 따지기 때문! 꼭 String은 equals로 비교하기.
}
@Override
public boolean equals(Object obj) {
String n = ((Person)obj).name;
int a = ((Person)obj).age;
if((this.name.equals(n)) && (this.age == a))
return true;
else
return false;
}
}
|
cs |
6. 아래의 IntegerComparator를 내림차순 정렬이 되도록 구현하시오.
· 참고

· 작성
1
2
3
4
5
6
|
class IntegerComparator implements Comparator<Integer>{
@Override
public int compare(Integer n1, Integer n2){
return n2.intValue() - n1.intValue();
}
}
|
cs |
'bitcamp > JAVA' 카테고리의 다른 글
컬렉션 프레임워크_연습문제2 (0) | 2021.02.06 |
---|---|
컬렉션 프레임워크 (0) | 2021.02.05 |
제네릭_연습문제 (0) | 2021.01.26 |
제네릭 (0) | 2021.01.25 |
자바의 기본 class_연습문제 (0) | 2021.01.25 |