Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions src/parkseonghyun/Report5/Report5_1
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//6-1. 다음과 같은 멤버 변수를 갖는 Student 클래스를 정의하세요.
//타입 : String, 변수명 : name, 설명 : 학생 이름
//타입 : int, 변수명 : ban, 설명 : 반
//타입 : int, 변수명 : no, 설명 : 번호
//타입 : int, 변수명 : kor, 설명 : 국어 점수
//타입 : int, 변수명 : eng, 설명 : 영어 점수
//타입 : int, 변수명 : math, 설명 : 수학 점수
class Student {
String name;
int ban;
int no;
int kor;
int eng;
int math;
}
31 changes: 31 additions & 0 deletions src/parkseonghyun/Report5/Report5_2
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
//6-2. 6-1에서 정의한 Student 클래스에 생성자와 info()를 추가해서 실행결과와 같은 결과를 얻도록 하세요.
public class Report5_2 {
public static void main(String[] args) {
Student s = new Student("홍길동",1,1,100,60,76);
String str = s.info();
System.out.println(str);
}
}

class Student {
String name;
int ban;
int no;
int kor;
int eng;
int math;

public Student(String name, int ban, int no, int kor, int eng, int math){
this.name = name;
this.ban = ban;
this.no = no;
this.kor = kor;
this.eng = eng;
this.math = math;
}
public String info() {
int sum = kor + eng + math;
float avg = (float)Math.round(sum/3f*10)/10;
return "예상 결과: " + name +", "+ ban +", "+ no+", " + kor+", " + eng+", " + math+", " + sum+", " + avg;
}
}
41 changes: 41 additions & 0 deletions src/parkseonghyun/Report5/Report5_3
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
//6-3. 연습문제 6-1에서 정의한 Student 클래스에 다음과 같이 정의된 두 개의 메서드를 추가하세요.
//1. 메서드명 : getTotal
//기능 : 국어(kor), 영어(eng), 수학(math)의 점수를 모두 더해서 반환한다.
//반환타입 : int
//매개변수 : 없음
//2. 메서드명 : getAverage
//기능 : 총점(국어점수+영어점수+수학점수)을 과목수로 나눈 평균을 구한다.
//소수점 둘째자리에서 반올림할 것.
//반환타입 : float
//매개변수 : 없음
public class Report5_3 {
public static void main(String[] args) {
Student s = new Student();
s.name = "홍길동";
s.ban = 1;
s.no = 1;
s.kor = 100;
s.eng = 60;
s.math = 76;
System.out.println("이름 :" + s.name);
System.out.println("총점 :" + s.getTotal());
System.out.println("평균 :" + s.getAverage());
}//예상 결과 : 이름 : 홍길동, 총점 : 236, 평균 : 78.7
}

class Student {
String name;
int ban;
int no;
int kor;
int eng;
int math;

int getTotal() {
return kor + eng + math;
}

float getAverage() {
return (float) Math.round(getTotal() / 3f * 10) / 10;
}
}
14 changes: 14 additions & 0 deletions src/parkseonghyun/Report5/Report5_4
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//6-5. 다음의 코드에 정의된 변수들을 종류별(클래스 변수,인스턴스 변수, 지역변수)로 구분해서 적으세요.
class PlayingCard {
int kind; //인스턴스 변수
int num; // 인스턴스 변수
static int width; // 클래스 변수
static int height; // 클래스 변수
PlayingCard(int k, int n) { // 지역 변수
kind = k; //지역 변수
num = n; // 지역 변수
}
public static void main(String args[]) {
PlayingCard card = new PlayingCard(1,1); //지역 변수
}
}
19 changes: 19 additions & 0 deletions src/parkseonghyun/Report5/Report5_5
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//6-7. 다음은 컴퓨터 게임의 병사(marine)를 클래스로 정의한 것이다.
//이 클래스의 멤버 중에 static을 붙여야 하는 것은 어떤 것들이고 그 이유는 무엇인가?
//(단, 모든 병사의 공격력과 방어력은 같아야 한다.)
class Marine {
int x=0, y=0; //Marine의 위치좌표 (x,y)
int hp = 60; //현재 체력
int weapon = 6; //공격력 //static int weapon = 6;
int armor = 0; //방어력 //static int armor
void weaponUp() { //static void weaponUp()
weapon++;
}
void armorUp() { static void armorUp()
armor++;
}
void move(int x, int y) {
this.x = x;
this.y = y;
}
}
63 changes: 63 additions & 0 deletions src/parkseonghyun/Report6/Report6_1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
6-8. 다음 중 생성자에 대한 설명으로 옳지 않은 것은? (모두 고르시오) b,e
b. 생성자는 객체를 생성하기 위한 것이다. (인스턴스 변수 초기화)
e. 생성자는 오버로딩 할 수 없다. (생성자 오버로딩 가능)

6-9. 다음 중 this에 대한 설명으로 맞지 않은 것은? (모두 고르시오) b
b. 클래스 내에서라면 어디서든 사용할 수 있다.(static 변수, 메서드는 사용 불가)

6-10. 다음 중 오버로딩이 성립하기 위한 조건이 아닌 것은? (모두 고르시오) c,d
c. 리턴타입이 달라야 한다.(상관 없음)
d. 매개변수의 이름이 달라야 한다.(상관 없음)

6-11. 다음 중 아래의 add메서드를 올바르게 오버로딩 한 것은? (모두 고르시오) a
> long add(int a, int b) { return a+b; }

a. long add(int x, int y) { return x+y; }(매개 변수의 타입이 같아 컨파일러가 구분 못함)
b. long add(long a, long b) { return a+b; }
c. int add(byte a, byte b) { return a+b; }
d. int add(long a, int b) { return (int)(a+b); }

6-12. 다음 중 초기화에 대한 설명으로 옳지 않은 것은? (모두 고르시오) c, e
a. 멤버변수는 자동 초기화되므로 초기화하지 않고도 값을 참고할 수 있다. (iv,cv 디폴트값으로 초기화됨)
b. 지역변수는 사용하기 전에 반드시 초기화해야 한다.
c. 초기화 블럭보다 생성자가 먼저 수행된다.(초기화 블럭이 먼저 수행)
d. 명시적 초기화를 제일 우선적으로 고려해야 한다.
e. 클래스변수보다 인스턴스변수가 먼저 초기화된다(클래스 변수가 제일 먼저 초기화됨)

6-13. 다음 중 인스턴스변수의 초기화 순서가 올바른 것은? a
a. 기본값-명시적초기화-초기화블럭-생성자
b. 기본값-명시적초기화-생성자-초기화블럭
c. 기본값-초기화블럭-명시적초기화-생성자
d. 기본값-초기화블럭-생성자-명시적초기화

6-14. 다음 중 지역변수에 대한 설명으로 옳지 않은 것은? (모두 고르시오) a, e
a. 자동 초기화되므로 별도의 초기화가 필요없다. (스택에 쌓여 메모리를 위해 수동초기화 해야함)
b. 지역변수가 선언된 메서드가 종료되면 지역변수도 함께 소멸된다.
c. 메서드의 매개변수로 선언된 변수도 지역변수이다.
d. 클래스변수나 인스턴스변수보다 메모리 부담이 적다.
e. 힙(heap)영역에 생성되며 가비지 컬렉터에 의해 소멸된다.(지역 변수는 스택에 생성되지 않나요~~?)

6-15. 호출스택이 다음과 같은 상황일 때 옳지 않은 설명은? (모두 고르시오) a
a. 제일 먼저 호출스택에 저장된 것은 main메서드이다.
b. println메서드를 제외한 나머지 메서드들은 모두 종료된 상태이다.(대기 상태)
c. method2메서드를 호출한 것은 main메서드이다.
d. println메서드가 종료되면 method1메서드가 수행을 재개한다.
e. main-method2-method1-println의 순서로 호출되었다.
f. 현재 실행중인 메서드는 println뿐이다.

//6-16. 다음 코드의 실행 결과를 예측하여 적어주세요.
class Exercise6_16 {
public static void change(String str) {
str += "456";
}

public static void main(String[] args) {
String str = "ABC123";
System.out.println(str);
change(str);
System.out.println("After change:" + str);
}
}

출력 : ABC123
After change: ABC123
Empty file.
21 changes: 21 additions & 0 deletions src/parkseonghyun/Report7/Report7_1
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
class Exercise6_17 {

public static int[] shuffle(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int j = (int) (Math.random() * arr.length);
System.out.println(j);
int temp = arr[i];
arr[i] = arr[j];
arr[j] = arr[i];
}
return arr;
}

public static void main(String[] args) {
int[] original = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
System.out.println(java.util.Arrays.toString(original));

int[] result = shuffle(original);
System.out.println(java.util.Arrays.toString(result));
}
}
23 changes: 23 additions & 0 deletions src/parkseonghyun/Report7/Report7_2
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class Exercise6_18 {

public static boolean isNumber(String str){
if (str==null || str == "")
return false;

for (int i = 0; i <str.length() ; i++) {
char test = str.charAt(i);
if (test < '0' || test >'9') {
return false;
}
}
return true;
}

public static void main(String[] args) {
String str = "123";
System.out.println(str + " 는 숫자입니까? " + isNumber(str));
str = "1234o";
System.out.println(str + " 는 숫자입니까? " + isNumber(str));
}
}
//예상 결과 : 123는 숫자입니까? true, 1234o는 숫자입니까? false
61 changes: 61 additions & 0 deletions src/parkseonghyun/Report7/Report7_3
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
class MyTv {
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;
void turnOnOff() {
isPowerOn = !isPowerOn;
// (1) isPowerOn의 값이 true면 false로, false면 true로 바꾼다.
}
void volumeUp() {
if (volume>MAX_VOLUME){
volume++;
}
// (2) volume의 값이 MAX_VOLUME보다 작을 때만 값을 1 증가시킨다.
}
void volumeDown() {
if(volume > MIN_VOLUME){
volume--;
}
// (3) volume의 값이 MIN_VOLUME보다 클 때만 값을 1 감소시킨다.
}
void channelUp() {
if (channel == MAX_CHANNEL){
channel = MIN_CHANNEL;
}else {
channel++;
}
// (4) channel의 값을 1 증가시킨다.
// 만일 channel이 MAX_CHANNEL이면 , channel의 값을 MIN_CHANNEL로 바꾼다.
}
void channelDown() {
if (channel == MIN_CHANNEL){
channel = MAX_CHANNEL;
}else {
channel--;
}
// (5) channel의 값을 1 감소시킨다 .
// 만일 channel이 MIN_CHANNEL이면, channel의 값을 MAX_CHANNEL로 바꾼다.
}
}

class Exercise6_19 {
public static void main(String args[]) {
MyTv t = new MyTv();
t.channel = 100;
t.volume = 0;
System.out.println("CH:" + t.channel + ", VOL:" + t.volume);
t.channelDown();
t.volumeDown();
System.out.println("CH:" + t.channel + ", VOL:" + t.volume);
t.volume = 100;
t.channelUp();
t.volumeUp();
System.out.println("CH:" + t.channel + ", VOL:" + t.volume);
}
}

//예상 결과 : CH: 100, VOL: 0 / CH: 99, VOL: 0 / CH: 100, VOL: 100
22 changes: 22 additions & 0 deletions src/parkseonghyun/Report7/Report7_4
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
class Exercise6_20 {
public static int max(int[] arr) {
if (arr==null || arr.length == 0){
return -999999;
}
int num = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > num){
num = arr[i];
}
}return num;
}
public static void main(String[] args) {
int[] data = {3,2,9,4,7};
System.out.println(java.util.Arrays.toString(data));
System.out.println("최대값 :"+max(data));
System.out.println("최대값 :"+max(null));
System.out.println("최대값 :"+max(new int[]{})); // 크기가 0인 배열 }
}
}

//예상 결과 : 최대값: 9 / 최대값: -99999 최대값: -999999
15 changes: 15 additions & 0 deletions src/parkseonghyun/Report7/Report7_5
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
class Exercise6_21 {
public static int abs(int value){
if (value < 0){
return -value;
}return value;
}

public static void main(String[] args) {
int value = 5;
System.out.println(value + "의 절대값 :" + abs(value));
value = -10;
System.out.println(value + "의 절대값 :" + abs(value));
}
}
//예상 결과 : 5의 절대값 : 5 / -10의 절대값 : 10
45 changes: 45 additions & 0 deletions src/parkseonghyun/Report8/Report8_1
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
섯다카드 20장을 포함하는 섯다카드 한 벌(SutdaDeck클래스)을 정의한 것이다.
섯다카드 20장을 담는 SutdaCard배열을 초기화하시오.
단, 섯다카드는 1부터 10까지의 숫자 가 적힌 카드가 한 쌍씩 있고, 숫자가 1, 3, 8인 경우에는 둘 중의 한 장은 광(Kwang)이 어야 한다.
즉, SutdaCard의 인스턴스변수 isKwang의 값이 true이어야 한다.
class SutdaDeck {
final int CARD_NUM = 20;
SutdaCard[] cards = new SutdaCard[CARD_NUM];

SutdaDeck() {
// (구현) 배열 SutdaCard를 적절히 초기화 하시오.
for (int i = 0; i < cards.length; i++) {
int num = i%10+1;
boolean isKwang = (i<10)&&(num==1||num==3||num==8);
cards[i]= new SutdaCard(num, isKwang);
}
}

class SutdaCard {
int num;
boolean isKwang;

SutdaCard() {
this(1, true);
}

SutdaCard(int num, boolean isKwang) {
this.num = num;
this.isKwang = isKwang;
}

// info()대신 Object클래스의 toString()을 오버라이딩했다.
public String toString() {
return num + ( isKwang ? "K":"");
}
}

class Exercise7_1 {
public static void main(String args[]) {
SutdaDeck deck = new SutdaDeck();

for (int i = 0; i < deck.cards.length; i++)
System.out.print(deck.cards[i] + ",");
}
}
// 예상결과) 1K,2,3K,4,5,6,7,8K,9,10,1,2,3,4,5,6,7,8,9,10,
Loading