반응형
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
package scoreProcessingProgram;
 
import java.util.Scanner;
 
public class ScoreProcessingSystem {
 
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
 
        // 매크로 설정
        int NAME = 0;
        int KOR = 1;
        int ENG = 2;
        int MATH = 3;
        int SUM = 4;
        int AVG = 5;
 
        int stuDataNum = 6// 한 학생에 대한 정보 수
        int numOfStu = 0// 총 학생 수
        String tmp; // 입력받을 때 임의로 쓰는 변수
        char isContinue; // 프로그램 진행 여부 변수
 
        boolean isExistStudent = false// 학생을 검색할 때 존재 여부 확인
        boolean isExistScore = false// 검색하고 싶은 성적이 존재하는지
        boolean isSuccessful = false// 성적 수정 여부 결정
 
        int stuIndex = 0// 입력받을 위치
        int stuCount = 0// 입력받은 학생 수
        int deleteCount = 0//몇명의 학생이 삭제되었는지
 
        // 한 학생에 대한 정보
        final String[] stuData = new String[stuDataNum]; // {'이름', '국어', '영어', '수학', '총점', '평균'}
        stuData[0= new String("이름");
        stuData[1= new String("국어");
        stuData[2= new String("영어");
        stuData[3= new String("수학");
        stuData[4= new String("총점");
        stuData[5= new String("평균");
 
        String[][] stu;
 
        System.out.println("학생 수 입력 : ");
        numOfStu = sc.nextInt();
 
        stu = new String[numOfStu][];
        do {
 
            // 기능 구현
            System.out.print("1.입력  2.출력  3.검색  4.수정  5.삭제 : ");
            int selectedFunction = sc.nextInt(); // user가 원하는 기능 입력 받는 변수
 
            switch (selectedFunction) {
            case 1// 1. 입력
                stu[stuIndex] = new String[stuDataNum];
 
                System.out.println((stuIndex + 1+ "번째 학생의 정보 입력");
 
                for (int i = 0; i < stuDataNum; i++) {
                    if (i == SUM)
                        break// sum과 avg는 입력받을 필요 없음
 
                    System.out.print(stuData[i] + " : ");
                    tmp = sc.next();
                    stu[stuIndex][i] = new String(tmp);
                }
 
                // sum, avg계산
                stu[stuIndex][SUM] = Integer.toString(Integer.parseInt(stu[stuIndex][KOR])
                        + Integer.parseInt(stu[stuIndex][ENG]) + Integer.parseInt(stu[stuIndex][MATH]));
                stu[stuIndex][AVG] = Integer.toString(Integer.parseInt(stu[stuIndex][SUM]) / 3);
 
                stuIndex++;
                stuCount++;
 
                break;
            case 2// 2. 출력
                // if(stu[i][NAME].equals("")) { count--;}
 
                // 정보가 있는지 확인
                if (numOfStu == 0 || stuCount == 0) {
                    System.out.println("학생 정보가 없습니다.");
                    break;
                }
 
                System.out.println();
                System.out.println("--학생 정보 출력--");
 
                for (int i = 0; i < stuCount + deleteCount; i++) {
 
                    for (int j = 0; j < stuDataNum; j++) {
 
                        if (!stu[i][j].equals("null"))
                            System.out.print(stu[i][j] + " ");
                    }
                    System.out.println();
                }
                System.out.println();
 
                break;
            case 3// 3. 검색
                if (stuCount == 0) {
                    System.out.println("학생 정보가 없습니다.");
                    break;
                }
 
                System.out.print("검색하고 싶은 성적을 입력하세요 : ");
                int userWantToSearch = sc.nextInt();
 
                System.out.println("--학생 정보 출력--");
 
                for (int i = 0; i < stuIndex; i++) {
                    if (stu[i][SUM].equals("null"))
                        continue;
 
                    if (Integer.parseInt(stu[i][SUM]) >= userWantToSearch) {
 
                        // 조건에 만족하는 결과 값 출력
                        for (int j = 0; j < stu[i].length; j++) {
                            System.out.print(stu[i][j] + " ");
                        }
                        isExistScore = true;
                        System.out.println();
                    }
                }
                if (isExistScore == false) {
                    System.out.println("조건에 만족하는 성적이 없습니다.");
                }
                break;
            case 4// 4. 수정
 
                if (stuCount == 0) {
                    System.out.println("학생 정보가 없습니다.");
                    break;
                }
                System.out.print("수정하고 싶은 학생의 이름을 입력하세요 : ");
                String name = sc.next(); // 수정할 학생 이름을 저장하는 변수
 
                // 검색할 학생 존재 여부
                for (int i = 0; i < stu.length; i++) {
                    if (name.equals(stu[i][NAME])) {
                        isExistStudent = true;
                        break;
                    }
                }
                if (isExistStudent) { // 검색한 학생 존재
                    System.out.print(name + " 학생의 어떤 성적을 수정하시겠어요? 1.국어 2.영어 3.수학");
                    int userWanToChangeScore = sc.nextInt(); // 수정하고싶은 과목
 
                    int changeScore; // 수정하고 싶은 성적 입력 받을 변수
 
                    switch (userWanToChangeScore) {
                    case 1:
                        System.out.print(stuData[KOR] + " 성적 몇점으로 수정하시겠어요? ");
                        changeScore = sc.nextInt();
 
                        for (int i = 0; i < stuIndex; i++) {
                            if (stu[i][NAME].equals(name)) {
                                stu[i][KOR] = Integer.toString(changeScore);
                            }
                        }
                        isSuccessful = true;
                        break;
 
                    case 2:
                        System.out.print(stuData[ENG] + " 성적 몇점으로 수정하시겠어요? ");
                        changeScore = sc.nextInt();
 
                        for (int i = 0; i < stuIndex; i++) {
                            if (stu[i][NAME].equals(name)) {
                                stu[i][ENG] = Integer.toString(changeScore);
                            }
                        }
                        isSuccessful = true;
                        break;
 
                    case 3:
                        System.out.print(stuData[MATH] + " 성적 몇점으로 수정하시겠어요? ");
                        changeScore = sc.nextInt();
 
                        for (int i = 0; i < stuIndex; i++) {
                            if (stu[i][NAME].equals(name)) {
                                stu[i][MATH] = Integer.toString(changeScore);
                            }
                        }
                        isSuccessful = true;
                        break;
                    default:
                        System.out.println("잘못 눌렀습니다.");
 
                    }
                    if (isSuccessful) {
                        // 총점, 평점 수정
                        for (int i = 0; i < stuIndex; i++) {
                            if (stu[i][NAME].equals(name)) {
                                stu[i][SUM] = Integer.toString(Integer.parseInt(stu[i][KOR])
                                        + Integer.parseInt(stu[i][ENG]) + Integer.parseInt(stu[i][MATH]));
                                stu[i][AVG] = Integer.toString(Integer.parseInt(stu[i][SUM]) / 3);
                            }
                        }
                        System.out.println("수정이 완료되었습니다.");
                    }
                    
                }
                break;
            case 5// 5. 삭제
                System.out.print("삭제할 학생의 이름을 입력하세요 : ");
                String userWantToDeleteData = sc.next();
 
                for (int i = 0; i < stuIndex; i++) {
                    if (userWantToDeleteData.equals(stu[i][NAME])) {
                        isExistStudent = true;
 
                        for (int j = 0; j < stuDataNum; j++) {
                            stu[i][j] = "null";
                        }
                        stuCount--;
                        
                    }
                }
 
                if (!isExistStudent) {
                    System.out.println("검색하신 학생이 없습니다.");
                    break;
                }
                System.out.println("삭제가 완료되었습니다.");
                isExistStudent = false;
                deleteCount++;
                break;
            default:
                System.out.println("잘못 입력했습니다.");
            }
 
            System.out.println("끝내려면 n을 누르세요");
            isContinue = sc.next().charAt(0);
        } while (isContinue == 'n' || stuCount == 5);
 
        System.out.println("끝.");
 
    }
 
}
 
cs


반응형

'Programming Language > JAVA' 카테고리의 다른 글

[급여관리 프로그램(Has~A 만)  (24) 2018.07.16
[Java]Enum  (0) 2018.07.12
클래스 구성요소  (0) 2018.07.10
이클립스 단축키 모음  (0) 2018.07.05
<Java> 제네릭  (0) 2018.01.08
반응형

방향키 사용하여 랜덤으로 배치되는 동그라미까지 이동하기


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
import random
import turtle
 
#거북이로 동그라미까지 이동하기
 
player = turtle.Turtle()  #사용할 거북이
player.color("blue")
player.shape("turtle")
player.speed(0)
player.penup()
player.goto(random.randint(-300,300), random.randint(-300300))
screen = player.getscreen()
 
a1 = turtle.Turtle() #목표지점1
a1.color("red")
a1.shape("circle")
a1.speed(0)
a1.penup()
a1.goto(random.randint(-300,300), random.randint(-300300))
 
a2 = turtle.Turtle() #목표지점1
a2.color("red")
a2.shape("circle")
a2.speed(0)
a2.penup()
a2.goto(random.randint(-300,300), random.randint(-300300))
 
def left() :
        player.left(30)
def right():
        player.right(30)
def up() :
        player.forward(30)
def down() :
        player.backward(30)
 
screen.onkeypress(left, "Left")
screen.onkeypress(right, "Right")
screen.onkeypress(up, "Up")
screen.onkeypress(down, "Down")
screen.listen()
 
 
def play() :
        playser.forward(2)
        a1.forward(2)
        a2(forward2)
        screen.ontimer(play, 10)
 
screen.ontimer(play, 10)
 
cs


반응형
반응형

2018.07.05



Ctrl + F11 : 실행


Ctrl + L : 특정 줄 번호로 이동


Ctrl + 마우스 커서 : 클래스 / 메소드 / 멤버 상세 검색


Ctrl + Shift + O : 자동 import


F2 : 에러의 빨간 줄에 커서를 가져가서 단축키를 누르면 에러 원인에 대한 힌트 제공


Ctrl + 0 : 클래스 구조 트리로 보여줌


Ctrl + Shift + T : 클래스 찾기


Ctrl + Shift + F : 코드 자동 정리


Ctrl + Shift + / : 블록 주석 (/* */)


Ctrl + Shift + \ : 블록 주석 제거


Ctrl + Space : 입력 보조장치 (메소드 쉽게 생성 및 변경)


Ctrl + / : 여러줄이 한꺼번에 주석 처리 (//)


Ctrl + D : 한줄 삭제


Ctrl + Shift + X : 대문자 변환


Ctrl + Shift + Y : 소문자 변환


Ctrl + N : 새로운 파일 및 프로젝트 생성



★ 디버깅 단축키 ★


Ctrl + Shift + B : 현 커서의 위치에 브레이크 포인터 설정 / 해제


F11 : 디버깅 시작


F8 : 디버깅 계속


F5 : 한 줄씩 실행하되 함수일 경우 그 함수 내부로 들어감


F6 : 한 줄씩 실행


Ctrl + R : 현재 라인까지 실행


Ctrl + F11 : 이전에 실행되었던 Run 파일 실행

반응형

'Programming Language > JAVA' 카테고리의 다른 글

[급여관리 프로그램(Has~A 만)  (24) 2018.07.16
[Java]Enum  (0) 2018.07.12
클래스 구성요소  (0) 2018.07.10
성적처리 프로그램(클래스 사용x)  (0) 2018.07.09
<Java> 제네릭  (0) 2018.01.08
반응형


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class MyClass {
    MyClass() { }
    
    //전달받는 인수에 따라 생성자 오버로딩 시키기..
    void func01(int num) {
        System.out.println(num);
    }
    void func02(String str) {
        System.out.println(str);
    }
    void func03(float f) {
        System.out.println(f);
    }
}
 
public class Practice01 {
    public static void main(String[] args) {
        MyClass myClass = new MyClass();
        myClass.func01(10);
        myClass.func02("Hello");
        myClass.func03(3.14f);
    }
}
 
cs
이렇게 전달받는 인수에 따라 함수를 생성할 때 출력문이 여러번 들어가게 되어 귀찮아진다.. 이를 보완하고자 제네릭을 쓰게되는데..



<제네릭을 사용한 코드>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class MyClass <T> {
    MyClass() {
        
    }
    void func01(T n) {
        System.out.println(n);
    }
}
 
public class Practice01 {
    public static void main(String[] args) {
        MyClass<Integer> myclass1 = new MyClass<>(); //Integer는 class..
        myclass1.func01(10);
        
        MyClass<String> myclass2 = new MyClass<>();
        myclass2.func01("메롱");
        
        MyClass<MyClass> myclass3 = new MyClass<>();
        myclass3.func01(new MyClass());
    }
}
cs
class를 생성할 때 <T>의 의미는 "객체를 생성시킬 때 타입을 알려줄테니 <T>대신에 그 타입을 넣고 <T>를 알려준 타입으로 대신 사용하여라.."라는 의미를 가지고 있다.(대명사역할) 이곳에 넣을수 있는 타입으로는 클래스타입(Integer, Float, String...)으로 일반타입(int, short, char...)은 넣을 수 없다.

객체를 생성해줄때 <>사이에 원하는 클래스타입을 넣어준다.


1
2
MyClass<Integer> myclass1 = new MyClass<>(); //Integer는 class..
myclass1.func01(10);
cs

myclass1타입은 Integer타입으로 main함수에서 func01함수를 부를때 인수를 Integer타입으로 넘겨준다. MyClass에서는 <T>타입으로 되어있지만 Integer타입으로 사용가능하다. Integet타입으로 넘겼는데 String으로 사용할 경우 당연한 에러가 나온다!



마찬가지로..

1
2
Apple<String> a2 = new Apple<>();
a2.func01("메롱");
cs


1
2
 MyClass<MyClass> myclass3 = new MyClass<>();
 myclass3.func01(new MyClass());
cs
String 클래스타입, 내가 직접 생성한 MyClass타입을 사용할 수 있다.










잘못된 정보에 대한 피드백은 언제나 환영입니다!!


반응형

'Programming Language > JAVA' 카테고리의 다른 글

[급여관리 프로그램(Has~A 만)  (24) 2018.07.16
[Java]Enum  (0) 2018.07.12
클래스 구성요소  (0) 2018.07.10
성적처리 프로그램(클래스 사용x)  (0) 2018.07.09
이클립스 단축키 모음  (0) 2018.07.05

+ Recent posts