Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- io
- 동적 버튼 생성
- 조건문
- enum
- 변수선언
- 연산자
- 자바
- IBatis 게시판
- ListSort
- Thread
- 변수
- 고급자바
- 객체지향
- 동적 데이터
- MAP
- I/O
- 동적 버튼 onclick
- 코딩
- 쓰레드
- 동적 문자열
- Java
- 계산기
- 변수초기화
- oclick 동적
- 기초
- iBatis
- comparator
- 객체
- Comparable
- IBatis CRUD
Archives
- Today
- Total
Jun's Blog
[Java] 경마 프로그램 예제 본문
/**
*
10마리의 말들이 경주하는 경마 프로그램 작성하기
말은 Horse라는 이름의 클래스로 구성하고,
이 클래스는 말이름(String), 등수(int)를 멤버변수로 갖는다.
그리고, 이 클래스에는 등수를 오름차순으로 처리할 수 있는
기능이 있다.( Comparable 인터페이스 구현)
경기 구간은 1~50구간으로 되어 있다.
경기 중 중간중간에 각 말들의 위치를 >로 나타내시오.
예)
1번말 --->------------------------------------
2번말 ----->----------------------------------
...
오름차순 sort
경기가 끝나면 등수 순으로 출력한다.
스레드로 말 클래스 만들고 전역변수로 발이름, 등수
*/
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class RaceHorse {
static int strRank = 1;
public static void main(String[] args) {
List<Horse> list = new ArrayList<>();
list.add(new Horse("0번마"));
list.add(new Horse("1번마"));
list.add(new Horse("2번마"));
list.add(new Horse("3번마"));
list.add(new Horse("4번마"));
list.add(new Horse("5번마"));
list.add(new Horse("6번마"));
list.add(new Horse("7번마"));
list.add(new Horse("8번마"));
list.add(new Horse("9번마"));
for (Horse horse : list) {
horse.start();
}
for (Horse hs : list) {
try {
hs.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Collections.sort(list);
System.out.println("경기끝 ....");
System.out.println("======================================================");
System.out.println();
System.out.println(" 경기 결과 ");
for (Horse horse : list) {
System.out.println(horse.getName1() + " " + horse.getRank() + "등");
}
}
}
class Horse extends Thread implements Comparable<Horse>{
private String name1;
int rank;
public Horse(String name) {
this.name1 = name;
}
public String getName1() {
return name1;
}
public void setName1(String name) {
this.name1 = name;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
@Override
public void run() {
for (int i = 0; i < 50; i++) {
System.out.println("\n" + name1 + " : ");
for (int j = 0; j < i; j++) {
System.out.print("-");
}
System.out.print(">");
for (int j = 49; j > i; j--) {
System.out.print("-");
}
System.out.println();
System.out.println();
System.out.println();
try {
Thread.sleep((int) (Math.random() * 500));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(name1 + " 끝");
setRank(RaceHorse.strRank);
RaceHorse.strRank++;
}
@Override
public int compareTo(Horse hor) {
if (rank > hor.getRank()) {
return 1;
} else {
return -1;
}
}
}
'High Java > Thread' 카테고리의 다른 글
[Java] Thread에서 데이터를 공통으로 사용하는 방법 예제 (0) | 2020.10.22 |
---|---|
[Java] Thread 알파벳 대문자 출력하고 끝낸 순서대로 결과 나타내기 (0) | 2020.10.22 |
[Java] Thread를 이용해 컴퓨터와 가위 바위 보 게임하기 (0) | 2020.10.22 |
[Java] 멀티 쓰레드를 활용한 카운트다운 처리 (0) | 2020.10.22 |
[Java] 단일 쓰레드에서의 사용자 입력 처리하기 (0) | 2020.10.22 |
Comments