자바_ 메소드 호출 문제 3가지
1. 이전채널
<문제>
MyTv2클래스에 getter 와 setter 를 추가한 후 이전 채널(previous channel)로 이동하는 기능의 메서드를 추가해서 실행결과와 같은 결과를 얻도록 하시오.
[Hint] 이전 채널의 값을 저장할 멤버변수를 정의하라.
메서드명 : gotoPrevChannel
기 능 : 현재 채널을 이전 채널로 변경한다.
반환타입 : 없음
매개변수 : 없음
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
42
43
44
|
import java.util.Set;
class MyTv2{
boolean isPowerOn;
int channel;
int volume;
final int MAX_VOLUME = 100;
final int MIN_VOLUME = 0;
final int MAX_CHANNEL = 100;
final int MIN_CHANNEL = 1;
int prevChannel; //이전 채널 값
void gotoPrevChannel() { //이전 채널로 되돌아간다.
//현재 채널값에 이전채널값을 넣는다.
setChannel(prevChannel);
}
public int getChannel() {
return channel;
}
public void setChannel(int channel) {
prevChannel = this.channel; //채널값은 이전채널로 넣고
//멤버변수를 지정안해주면 파라미터 변수가 와서 오류난다.
this.channel = channel;
}
}
public class Exercise {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyTv2 t = new MyTv2();
t.setChannel(10);
System.out.println("CH:"+t.getChannel());
t.setChannel(20);
System.out.println("CH:"+t.getChannel());
t.gotoPrevChannel();
System.out.println("CH:"+t.getChannel());
t.gotoPrevChannel();
System.out.println("CH:"+t.getChannel());
}
}
|
cs |
<결과 값>
CH:10
CH:20
CH:10
CH:20
2. 배열 객체
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
42
43
44
45
46
47
48
|
import java.util.Iterator;
//문제 : Person 클래스 정의
//멤버변수 : name, age, address
class Person{
String name;
int age;
String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
public class PersonUse {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person []pArr = new Person[3];
for (int i = 0; i < pArr.length; i++) {
pArr[i] = new Person(); //초기화.
pArr[i].setName("홍길동" + (i +1));
pArr[i].setAddress("경상북도 경산리 금락리" + (211+ i));
pArr[i].setAge(22 + i);
}
for (int i = 0; i < pArr.length; i++) {
System.out.println((i+1) + "번 : " + pArr[i].getName() + "," + pArr[i].getAge() + "," + pArr[i].getAddress());
}
}
}
|
cs |
<출력 결과>
3. 도형 공식
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
import java.util.Scanner;
public class FigureFormula {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
final double pi = 3.14;
boolean stop = false;
do {
System.out.println("***도형선택***");
System.out.println("1. 삼각형");
System.out.println("2. 원");
System.out.println("3. 사다리꼴");
System.out.println("4. 종료");
System.out.println("선택 : ");
int menuNumber = scanner.nextInt();
switch(menuNumber) {
case 1:
System.out.println("삼각형 넓이");
System.out.println("밑변 : ");
int base = scanner.nextInt();
System.out.println("높이 : ");
int height = scanner.nextInt();
double area = (base* height) /2;
System.out.printf("넓이 : %.2f%n%n", area);
break;
case 2:
System.out.println("원 넓이");
System.out.println("반지름 : ");
int round = scanner.nextInt();
area = pi * (round^2);
System.out.printf("넓이 : %.2f%n%n", area);
break;
case 3:
System.out.println("사다리꼴 넓이");
System.out.println("밑변 : ");
base = scanner.nextInt();
System.out.println("윗변 : ");
int Upperside = scanner.nextInt();
System.out.println("높이 : ");
height = scanner.nextInt();
area = (height * (base+ Upperside))/2;
System.out.printf("넓이 : %.2f%n%n", area);
break;
case 4:
System.out.println("프로그램 종료");
stop = true;
break;
default:
break;
}
}while(!stop);
}
}
|
cs |
<출력결과>
4. 비만도 계산기
<문제>
1. Super클래스명 : HealthSuper
필드명(protected) : char gender(성별)
double tall (신장)
double weight(체중)
메소드 : input() - 성별, 신장, 체중입력받기
output1() - 출력
2. Sub클래스 : HealthChild
필드명(private) : double s_weight (표준체중)
double fat (비만도)
String result (결과값)
메소드 : calculate() - 비만도 계산
output2() - 출력
====================================
★표준체중계산법★
남성 : 표준체중 = (신장-100)*0.9
여성 : 표준체중 = (신장-100)*0.85
비만도 = 현재체중(Kg)/표준체중(Kg)*100
-------------------------------------------------------
90%이하 : 저체중 121-130% : 경도비만
91 -110% : 정상(표준체중) 131-150% : 중도비만
111-120% : 과체중 150% : 고도비만
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
import java.util.Scanner;
class HealthSuper{
char gender;
double tall;
double weight;
void input() {
Scanner scanner = new Scanner(System.in);
System.out.println("---- 비만도 체크 ----");
System.out.println("성별(M/F): ");
gender = scanner.next().charAt(0);
System.out.println("신장(Cm): ");
tall = scanner.nextDouble();
System.out.println("체중(kg): ");
weight = scanner.nextDouble();
}
void output1() {
System.out.println("성별 : " + gender);
System.out.println("신장 : " + tall);
System.out.println("체중 : " + weight);
}
}
class HealthChild extends HealthSuper{
double s_weight;
double fat; //비만도
String result;
void calculate() {
if(gender == 'M') {
s_weight = (tall - 100) *0.9;
}
else if(gender =='F') {
s_weight = (tall - 100) * 0.85;
}
fat = weight / s_weight * 100; //비만도
if(fat <=90) {
result ="저체중";
}
else if(fat <= 110 ) {
result ="정상(표준체중)";
}
else if(fat <= 120 ) {
result ="과체중";
}
else if(fat <= 130 ) {
result ="경도비만";
}
else if(fat <= 150 ) {
result ="중도비만";
}
else {
result ="고도비만";
}
}
void output2() {
System.out.println("당신의 비만도" + String.format("%.2f", fat) + "이고, " + result + "입니다.");
}
}
public class ObesityCalculator {
public static void main(String[] args) {
// TODO Auto-generated method stub
HealthChild healthChild = new HealthChild();
healthChild.input();
healthChild.output1();
healthChild.calculate();
healthChild.output2();
}
}
|
cs |
<출력결과>
성별 입력시 소문자로 입력하면 오류난다.