### : 목차 구분 기호
--- : 목차 내에 항목 구분 기호
목차
1. 이론 및 정보
2. 설정 및 그 밖에
3. 소스코드
4. 과제
###################################
1. 이론 및 정보
-----------------------------------
Collection(java.util)
변수 -> 배열 -> 클래스 -> 컬렉션(클래스 + 연결리스트 알고리즘)
Collection
Set
- 정렬 순서가 없다
- 데이터 중복 X, 기존 데이터와 비교해서 낭비를 줄임
- HashSet, LinkedHashSet
SortedSet(정렬이 됨)
- TreeSet
List
- 정렬 순서가 있다.
- 중복될 수 있다.
- ArrayList, Vector, LinkedList
Map(키,값 두가지를 묶음으로 저장해서, 키 값으로 값을 찾아감 , 검색 용이)
- HashMap, HashTable
Vector 는 동기화 가능
- 동시에 접근해서 사용할 수 없음
-----------------------------------
JAVA 문법의 5.0(1.5) 버전이 큰 변화가 있었음
-----------------------------------
Generic(c++ Template 기능)
1. 특정타입(객체형)을 미리 검사
- 사전에 잘못된 데이터 타입을 미리 체크
2. Template(붕어빵틀?)
3. 문법
1) 클래스나 메서드에 적용가능
2) 사용 문법
클래스명<객체타입> 변수 = new 클래스<객체타입>();
-----------------------------------
-----------------------------------
-----------------------------------
###################################
2. 설정 및 그 밖에
-----------------------------------
-----------------------------------
-----------------------------------
###################################
3. 소스코드
-----------------------------------
###################################
3. 소스코드
-----------------------------------
/day11/src/day11/UtilTest2.java
package day11; import java.util.StringTokenizer; public class UtilTest2 { public static void main(String[] args) { // TODO StringTokenizer와 split String str1 = "홍길동, 임꺽정, 이순신, 김홍도"; String str2 = "홍길동, 임꺽정- 이순신/ 김홍도= 신윤복"; String names[] = str1.split(","); //split 은 하나의 기준만 가지고 구분 가능 for (int i = 0; i < names.length; i++) { System.out.println(names[i].trim()); } System.out.println("--------------------------------------"); StringTokenizer token = new StringTokenizer(str1, ","); while (token.hasMoreTokens()) { System.out.println(token.nextToken().trim()); } System.out.println("--------------------------------------"); StringTokenizer token1 = new StringTokenizer(str2, ",-/="); while (token1.hasMoreTokens()) { System.out.println(token1.nextToken().trim()); } System.out.println("--------------------------------------"); //과제, str3을 주석과 같이 출력되게 StringTokenizer를 사용해서 출력하라 String str3 = "JavaTM 언어 사양 제2판:James Gosling, Bill Join, Gilad Bracha:무라카미 미사키: 피어슨 에듀케이션:2000:5500"; //책제목 : JavaTM 언어 사양 제2판 //저자 : James Gosling // Bill Join // Gilad Bracha //번역자 : 무라카미 미사키 //출판사 : 피어슨 에듀케이션 //출판년도 : 2000 //가격 : 5500 StringTokenizer token2 = new StringTokenizer(str3, ":"); while (token2.hasMoreTokens()) { System.out.println(token2.nextToken().trim()); } } } |
-----------------------------------
/day11/src/day11/UtilTest3.java
package day11; public class UtilTest3 { public static void main(String[] args) { // TODO System.currentTimeMillis() long start = System.currentTimeMillis() / 1000; // 초단위 int sum = 0; //for (int i = 2147483646; i < 3000000000L; i++) { for (double i = 0; i < 3000000000L; i++) { sum += i; System.out.println(i); } long end = System.currentTimeMillis() / 1000; System.out.println("결과 : " + (end - start)); } } |
-----------------------------------
/day11/src/day11/UtilTest4.java
package day11; import java.util.Random; public class UtilTest4 { public static void main(String[] args) { // TODO Random // random.nextInt(10) 는 0 ~ 9 // random.nextInt(10) + 1 은 1 ~ 10 // 공식 = (최대값 - 최소값 + 1) + 최소값 // random.nextInt(10 - 1 + 1) + 1 Random random = new Random(); for (int i = 1; i < 1000; i++) { System.out.print(random.nextInt(10)+1+"\t"); if(i % 10 == 0) System.out.println(); } /*-------------------------------------------------------- * 1. 간단한 로또 추첨기 만들기 * 임의의 숫자 1부터 46까지의 숫자 중 6개를 골라 출력하자. *-------------------------------------------------------- * 2. 가위, 바위, 보 게임을 만들자 * 0:주먹 1:가위 2:보 * 컴퓨터 : 1(난수) * 입력 : 2(입력)(x를 입력하면 종료) * 결과 : 컴퓨터 승! * 전적 : 2전 2패 * -------------------------------------------------------- */ } } |
-----------------------------------
/day11/src/day11/UtilTest5.java
package day11; public class UtilTest5 { public static void main(String[] args) { // TODO 래퍼 클래스(Wrapper Class) // 클래스가 아닌 것들을 클래스로 감싸준다. // 값을 저장 + 클래스 메서드를 쓸 수 있음 /* int -> Integer * double -> Double * long -> Long * short -> Short */ Integer i = 10; String s = "10"; int iValue = Integer.parseInt(s); System.out.println(iValue); s = "3.14"; double dValue = Double.parseDouble(s); System.out.println(dValue); System.out.println(Integer.toBinaryString(15)); /* * 다음과 같은 문자열을 입력받았다고 가정하자 * String str = "2.5, 10, 9, 7, 3.14, 11" * 이것들의 합계를 구하시오. */ } } |
-----------------------------------
/day11/src/day11/UtilTest6.java
아래 코드로 디버깅 모드 테스트 해봄
package day11; public class UtilTest6 { public static void main(String[] args) { // TODO Auto-generated method stub int sum = 0; for (int i = 0; i < 5; i++) { sum += i; } System.out.println("결과 : " + sum); } } |
-----------------------------------
/day11/src/day11/SetTest.java
package day11; import java.util.HashSet; import java.util.Iterator; import java.util.TreeSet; public class SetTest { public static void main(String[] args) { // TODO Set계열의 클래스 HashSet set = new HashSet(); set.add("carrie"); set.add("kabbin"); set.add("kairo"); set.add("kairo"); set.add("kariss"); System.out.println("데이터 갯수 : "+set.size()); System.out.println(set.toString()); //알파벳 순서를 가짐 TreeSet tSet = new TreeSet(); tSet.add("julite"); tSet.add("terry"); tSet.add("kabbin"); tSet.add("terry"); tSet.add("carrie"); System.out.println("데이터 갯수 : "+tSet.size()); System.out.println(tSet); Iterator it = tSet.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } } |
-----------------------------------
/day11/src/day11/ListTest.java
package day11; import java.util.ArrayList; import java.util.Vector; public class ListTest { public static void main(String[] args) { // TODO List 계열의 클래스들 ArrayList list = new ArrayList(); list.add("carrie"); list.add("kairo"); list.add("kabbin"); list.add("kairo"); list.add("terry"); System.out.println(list.size()); //입력 받은 순서대로 저장 System.out.println(list); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } if(list.contains("kairo")){ System.out.println("데이터를 찾았다."); System.out.println(list.indexOf("kairo")+1+"번째 있다."); }else{ System.out.println("데이터를 못찾았다."); } //데이터의 추가 삭제 기능 list.add(2,"홍길동"); list.add("위치를 지정하지 않으면 마지막에 저장됨"); System.out.println(list); list.remove(3); System.out.println(list); //vector Vector v = new Vector(); v.add("홍길동"); v.add(10); v.add(3.14); v.add(true); System.out.println(v); System.out.println(v.size()); //데이터를 저장할 수 있는 용량, 갯수 System.out.println(v.capacity()); //공간을 데이터 갯수 만큼으로 줄임 v.trimToSize(); System.out.println(v.capacity()); } } |
-----------------------------------
/day11/src/day11/MapTest.java
package day11; import java.util.HashMap; import java.util.Iterator; import java.util.Set; public class MapTest { public static void main(String[] args) { // TODO Map계열의 클래스 HashMap map = new HashMap(); map.put("key01","홍길동"); map.put("key02","김유신"); map.put("key03","신돌석"); map.put("key04","임꺽정"); map.put("key05","권율"); System.out.println(map.size()); System.out.println(map); System.out.println(map.get("key02")); System.out.println(); //맵에 저장된 데이터를 반복문으로 어떻게 출력할까? for (int i = 0; i < map.size(); i++) { System.out.println(map.get("key0"+String.valueOf(i+1))); } System.out.println(); // keySet() key 값만 뽑아서 set 계열로 바꿔주는 메서드 Set set = map.keySet(); Iterator it = set.iterator(); while(it.hasNext()){ System.out.println(map.get(it.next())); } } } |
-----------------------------------
/day11/src/day11/BaseBall.java
package day11; import java.util.Random; /* 게임 방식 pc 369 user 123 1 ball user 456 1 ball user 468 1 strike user 389 2 strike user 124 out 어떤 숫자가 맞는 지 확인해서 숫자가 있는데 위치까지 맞으면 스트라이크 숫자는 있는데 위치가 맞지 않으면 볼 하나도 맞는게 없으면 아웃 */ /* * 1. 임의의 숫자를 3개 만들어 놓는다. * 2. 1부터 9까지의 단자리 숫자중에서 정한다. * 3. 중복된 숫자는 제거 */ // 아래 프로그램에 큰 실수가 있음 찾아보아라! public class BaseBall { public static void main(String[] args) { // TODO 숫자 야구 게임 int com[] = new int[3]; Random r = new Random(); for (int i = 0; i < com.length; i++) { com[i] = r.nextInt(9)+1; for (int j = 0; j < i; j++) { if(com[j] == com[i]){ i--; break; } } } System.out.println("컴퓨터가 생성한 숫자 : "+com[0]+","+com[1]+","+com[2]); int user[] = new int[3]; int strike=0,ball=0; java.util.Scanner scan = new java.util.Scanner(System.in); int num = 0; for(;;){ System.out.println("숫자 3개 입력 : "); num = scan.nextInt();//3자리 숫자가 들어옴 //100으로 나눈 수로 하든지 //string으로 받아서 파싱 하든지 user[0] = num / 100; user[1] = (num / 10) % 10; user[2] = num % 10; for (int i = 0; i < user.length; i++) { if(com[i]==user[i]){ strike++; } } //반복문으로 바꿔라, 볼 체크 /* if(com[0] == user[1] || com[0] == user[2]) ball++; if(com[1] == user[0] || com[1] == user[2]) ball++; if(com[2] == user[0] || com[2] == user[1]) ball++; */ for (int i = 0; i < user.length; i++) { for (int j = 0; j < user.length; j++) { if(i != j){ if(com[i]==user[j]) ball++; } } } if( strike == 3 ){ System.out.println("축하합니다."); break; }else if(strike == 0 && ball == 0){ System.out.println("아웃 입니다. 입력하신 값 : "+num); }else{ System.out.println("스트라이크 : "+strike+"\t볼 : "+ball + "\t입력하신 값 : "+num); } strike=0; ball=0; } } } |
-----------------------------------
/day11/src/day11/GenericTest1.java
package day11; import java.util.ArrayList; public class GenericTest1 { public static void main(String[] args) { // TODO Generic : 특정타입을 미리 검사 /* //문자열을 저장하기 위한 용도로 만듬 ArrayList list = new ArrayList(); list.add("hello"); list.add("홍길동"); list.add("world"); //문자열을 넣을 목적으로 만들었는데, //다른 것을 넣을 수도 있음, 까먹어서 list.add(100); //나중에 예기치 않은 에러가 나올 수 있음 //.... //.... String str = null; for (int i = 0; i < list.size(); i++) { //문자열일꺼라 예상을 하고 아래와 같은 코드를 넣음 //어디에서 틀렸는지 찾기 힘듬 str = (String)list.get(i); System.out.println(str); } */ ArrayList<String> list = new ArrayList<String>(); list.add("hello"); list.add("홍길동"); list.add("world"); //list.add(100); //배열이나 Collection에서만 쓰이는 반복문 // for(변수 : 보따리(배열,컬렉션)) -> 반복 횟수 지정할 필요 없음 // 보따리에서 꺼내서 변수에 담음, 보따리 내용 수 만큼 for(String str : list){ System.out.println(str); } } } |
-----------------------------------
/day11/src/day11/GenericTest2.java
/day11/src/day11/GenericTest2.java
package day11; /* class GenericDemo{ private int value; public GenericDemo(int value) { this.value = value; } int getValue() { return value; } } */ /* 위 클래스가 int형 인스턴스 변수만 가지고 있는데 * 혹시나 String이나 double을 쓰고 싶은 경우가 있음 * 이럴경우 고치기 위해서 시간, 비용이 듬 * 그래서 이럴 경우 Generic을 사용 * 실행 중에 정해지지 않은 데이터 타입을 정할 수 있도록 * 할 수 있음 */ class GenericDemo<T>{ private T value; public GenericDemo(T value) { this.value = value; } T getValue() { return value; } } /* * Generic 클래스를 만들지 않았으면 * 변수 값들을 더 넣던가, 클래스를 더 만들어야 하는데 * 이렇게 간단하게 생성 가능 */ public class GenericTest2 { public static void main(String[] args) { // TODO Generic : Template의 기능 // <>안에 객체 넣어서 표시해주는 것은 기본적으로 해줘야 하는데 // 아래는 생략이 가능해서 안넣음 GenericDemo<Integer> gd1 = new GenericDemo<Integer>(100); System.out.println(gd1.getValue()); GenericDemo<String> gd2 = new GenericDemo<String>("String"); System.out.println(gd2.getValue()); GenericDemo<Double> gd3 = new GenericDemo<Double>(3.14); System.out.println(gd3.getValue()); GenericDemo gd4 = new GenericDemo(true); System.out.println(gd4.getValue()); GenericDemo gd5 = new GenericDemo(-0.39999999999999999999999999); System.out.println(gd5.getValue()); //Generic은 Generic으로 만든 것만 사용 가능 //Document를 보고 확인해서 해당 기능이 지원 되는 것만 가능 } } |
-----------------------------------
-----------------------------------
-----------------------------------
###################################
4. 과제
-----------------------------------
4. 과제
-----------------------------------
4-1
/day11/src/day11/UtilTest2.java
//과제, str3을 주석과 같이 출력되게 StringTokenizer를 사용해서 출력하라
String str3 = "JavaTM 언어 사양 제2판:James Gosling, Bill Join, Gilad Bracha:무라카미 미사키: 피어슨 에듀케이션:2000:5500";
//책제목 : JavaTM 언어 사양 제2판
//저자 : James Gosling
// Bill Join
// Gilad Bracha
//번역자 : 무라카미 미사키
//출판사 : 피어슨 에듀케이션
//출판년도 : 2000
//가격 : 5500
String str3 = "JavaTM 언어 사양 제2판:James Gosling, Bill Join, Gilad Bracha:무라카미 미사키: 피어슨 에듀케이션:2000:5500";
//책제목 : JavaTM 언어 사양 제2판
//저자 : James Gosling
// Bill Join
// Gilad Bracha
//번역자 : 무라카미 미사키
//출판사 : 피어슨 에듀케이션
//출판년도 : 2000
//가격 : 5500
-----------------------------------
4-2, 4-3
/day11/src/day11/UtilTest4.java
/*
* 1. 간단한 로또 추첨기 만들기
* 임의의 숫자 1부터 46까지의 숫자 중 6개를 골라 출력하자.
*
* 2. 가위, 바위, 보 게임을 만들자
* 0:주먹 1:가위 2:보
* 컴퓨터 : 1(난수)
* 입력 : 2(입력)(x를 입력하면 종료)
* 결과 : 컴퓨터 승!
* 전적 : 2전 2패
*/
* 1. 간단한 로또 추첨기 만들기
* 임의의 숫자 1부터 46까지의 숫자 중 6개를 골라 출력하자.
*
* 2. 가위, 바위, 보 게임을 만들자
* 0:주먹 1:가위 2:보
* 컴퓨터 : 1(난수)
* 입력 : 2(입력)(x를 입력하면 종료)
* 결과 : 컴퓨터 승!
* 전적 : 2전 2패
*/
-----------------------------------
4-4
/day11/src/day11/UtilTest5.java
/*
* 다음과 같은 문자열을 입력받았다고 가정하자
* String str = "2.5, 10, 9, 7, 3.14, 11"
* 이것들의 합계를 구하시오.
*/
* 다음과 같은 문자열을 입력받았다고 가정하자
* String str = "2.5, 10, 9, 7, 3.14, 11"
* 이것들의 합계를 구하시오.
*/
-----------------------------------
4-5
/day11/src/day11/BaseBall.java
/*
게임 방식
pc 369
user 123 1 ball
user 456 1 ball
user 468 1 strike
user 389 2 strike
user 124 out
어떤 숫자가 맞는 지 확인해서
숫자가 있는데 위치까지 맞으면 스트라이크
숫자는 있는데 위치가 맞지 않으면 볼
하나도 맞는게 없으면 아웃
*/
/*
* 1. 임의의 숫자를 3개 만들어 놓는다.
* 2. 1부터 9까지의 단자리 숫자중에서 정한다.
* 3. 중복된 숫자는 제거
*
* 아래의 기능들 추가 가능
* 시도 횟수
* 걸린 시간 측정
* 레벨 조정 : 어렵게 만들기 -> 숫자 4개 , 5개 가능
* 최고 점수
* 순위리스트
* ...
*/
게임 방식
pc 369
user 123 1 ball
user 456 1 ball
user 468 1 strike
user 389 2 strike
user 124 out
어떤 숫자가 맞는 지 확인해서
숫자가 있는데 위치까지 맞으면 스트라이크
숫자는 있는데 위치가 맞지 않으면 볼
하나도 맞는게 없으면 아웃
*/
/*
* 1. 임의의 숫자를 3개 만들어 놓는다.
* 2. 1부터 9까지의 단자리 숫자중에서 정한다.
* 3. 중복된 숫자는 제거
*
* 아래의 기능들 추가 가능
* 시도 횟수
* 걸린 시간 측정
* 레벨 조정 : 어렵게 만들기 -> 숫자 4개 , 5개 가능
* 최고 점수
* 순위리스트
* ...
*/
-----------------------------------
4-6
성적표 버전 업
ArrayList
-----------------------------------
-----------------------------------
-----------------------------------
-----------------------------------
###################################
5. 과제 해결
-----------------------------------
import java.util.StringTokenizer;
public class Problem {
public static void main(String[] args) {
// TODO StringTokenizer와 split
//과제, str3을 주석과 같이 출력되게 StringTokenizer를 사용해서 출력하라
String str3 = "JavaTM 언어 사양 제2판:James Gosling, Bill Join, Gilad Bracha:무라카미 미사키: 피어슨 에듀케이션:2000:5500";
//책제목 : JavaTM 언어 사양 제2판
//저자 : James Gosling
// Bill Join
// Gilad Bracha
//번역자 : 무라카미 미사키
//출판사 : 피어슨 에듀케이션
//출판년도 : 2000
//가격 : 5500
StringTokenizer token2 = new StringTokenizer(str3, ":");
int count = 0;
while (token2.hasMoreTokens()) {
count++;
if (1 == count)
System.out.println("책제목 : "+token2.nextToken().trim());
else if( 2 == count ){
StringTokenizer token3 = new StringTokenizer(token2.nextToken().trim(), ",");
System.out.print("저자 : ");
while (token3.hasMoreElements()) {
System.out.println("\t"+token3.nextToken().trim());
}
}else if( 3 == count )
System.out.println("번역자 : "+token2.nextToken().trim());
else if( 4 == count )
System.out.println("출판사 : "+token2.nextToken().trim());
else if( 5 == count )
System.out.println("출판년도 : "+token2.nextToken().trim());
else if( 6 == count )
System.out.println("가격 : "+token2.nextToken().trim());
}
}
}
-----------------------------------
import java.util.HashSet;
import java.util.Random;
public class Problem {
public static void main(String[] args) {
/*
* 1. 간단한 로또 추첨기 만들기
* 임의의 숫자 1부터 46까지의 숫자 중 6개를 골라 출력하자.
*/
Random random = new Random();
HashSet set = new HashSet();
System.out.println("로또 추첨기");
while( 6 != set.size()){
set.add(random.nextInt(45) + 1);
}
System.out.println(set);
System.out.println("다른방식");
int num[] = new int[6];
for (int i = 0; i < num.length; i++) {
num[i] = random.nextInt(45) + 1;
for (int j = 0; j < i; j++) {
if(num[i]==num[j]){
i--;
break;
}
}
}
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+"\t");
}
}
}
-----------------------------------
import java.util.Random;
/*
* 가위, 바위, 보 게임을 만들자
* 0:주먹 1:가위 2:보
* 컴퓨터 : 1(난수)
* 입력 : 2(입력)(x를 입력하면 종료)
* 결과 : 컴퓨터 승!
* 전적 : 2전 2패
*/
public class Problem {
public static void main(String[] args) {
Random random = new Random();
int count = 0;
int win = 0;
int lose = 0;
int draw = 0;
int pc_random = 0;
System.out.println("가위 바위 보 게임");
for(;;){
System.out.println("0:가위 1:바위 2:보 9:종료");
java.util.Scanner scan = new java.util.Scanner(System.in);
System.out.println("컴퓨터는 정했습니다.");
pc_random = random.nextInt(3);
System.out.println("\t"+pc_random);
System.out.print("입력 :");
int input = scan.nextInt();
for(;;){
if( 0 == input || 1 == input || 2 == input || 9 == input )
break;
else
System.out.println("다시 입력하세요.");
}
if( 9 == input )
break;
if(input == pc_random){
draw++;
System.out.println("비겼습니다.");
}else if ((1 != input) && (1 != pc_random)) {
if(0 == input ){
win++;
System.out.println("이겼습니다.");
}else if(0 == pc_random){
lose++;
System.out.println("졌습니다.");
}
}else if(input > pc_random){
win++;
System.out.println("이겼습니다.");
}else if(input < pc_random){
lose++;
System.out.println("졌습니다.");
}
count++;
}
System.out.println(count+"전 "+win+"승 "+lose+"패");
}
}
-----------------------------------
/*
* 다음과 같은 문자열을 입력받았다고 가정하자
* String str = "2.5, 10, 9, 7, 3.14, 11"
* 이것들의 합계를 구하시오.
*/
import java.util.StringTokenizer;
public class Problem {
public static void main(String[] args) {
String str = "2.5, 10, 9, 7, 3.14, 11";
StringTokenizer token = new StringTokenizer(str, ",");
double sum = 0.0;
while (token.hasMoreTokens())
sum +=Double.parseDouble(token.nextToken().trim());
System.out.println(sum);
}
}
-----------------------------------
package day11;
import java.util.Random;
/*
게임 방식
pc 369
user 123 1 ball
user 456 1 ball
user 468 1 strike
user 389 2 strike
user 124 out
어떤 숫자가 맞는 지 확인해서
숫자가 있는데 위치까지 맞으면 스트라이크
숫자는 있는데 위치가 맞지 않으면 볼
하나도 맞는게 없으면 아웃
*/
/*
* 1. 임의의 숫자를 3개 만들어 놓는다.
* 2. 1부터 9까지의 단자리 숫자중에서 정한다.
* 3. 중복된 숫자는 제거
*
* 아래의 기능들 추가 가능
* 시도 횟수
* 걸린 시간 측정
* 레벨 조정 : 어렵게 만들기 -> 숫자 4개 , 5개 가능
* 최고 점수
* 순위리스트
* ...
*/
public class BaseBall {
public static void main(String[] args) {
// TODO 숫자 야구 게임
int com[] = new int[3];
int count = 0;
Random r = new Random();
for (int i = 0; i < com.length; i++) {
com[i] = r.nextInt(9)+1;
for (int j = 0; j < i; j++) {
if(com[j] == com[i]){
i--;
break;
}
}
}
System.out.println("컴퓨터가 생성한 숫자 : "+com[0]+","+com[1]+","+com[2]);
int user[] = new int[3];
int strike=0,ball=0;
java.util.Scanner scan = new java.util.Scanner(System.in);
int num = 0;
long start = System.currentTimeMillis() / 1000;
for(;;){
for(;;){
System.out.print("숫자 3개 입력 : ");
count++;
num = scan.nextInt();
user[0] = num / 100;
user[1] = (num / 10) % 10;
user[2] = num % 10;
boolean isfalse = false;
for (int i = 0; i < user.length; i++) {
for (int j = i+1; j < user.length; j++) {
if(user[i]==user[j]){
isfalse = true;
}
}
}
if(isfalse)
System.out.println("다시 입력하시오");
else
break;
}
for (int i = 0; i < user.length; i++) {
if(com[i]==user[i]){
strike++;
}
}
for (int i = 0; i < user.length; i++) {
for (int j = 0; j < user.length; j++) {
if(i != j){
if(com[i]==user[j])
ball++;
}
}
}
if( strike == 3 ){
System.out.println("축하합니다.");
System.out.println("시도 횟수 : "+count);
long end = System.currentTimeMillis() / 1000;
System.out.println("걸린시간 : " + (end - start));
break;
}else if(strike == 0 && ball == 0){
System.out.println("아웃 입니다. 입력하신 값 : "+num);
}else{
System.out.println("스트라이크 : "+strike+"\t볼 : "+ball + "\t입력하신 값 : "+num);
}
strike=0;
ball=0;
}
}
}
-----------------------------------
// 성적표v4
import java.util.ArrayList;
class Sungjuk {
String name;
int no;
int kor;
int eng;
int math;
int tot;
int avg;
char hak;
int rank;
}
public class Problem {
public static void main(String[] args) {
// TODO 성적표v4
ArrayList list = new ArrayList();
java.util.Scanner scan = new java.util.Scanner(System.in);
System.out.println("성적을 입력프로그램!!!!!!!");
int flag = 0;
for (int i = 0; ; i++) {
list.add(new Sungjuk());
((Sungjuk)(list.get(i))).no = i+1;
((Sungjuk)(list.get(i))).rank = 1;
System.out.print("이름을 입력하세요 : ");
((Sungjuk)(list.get(i))).name = scan.next();
System.out.print("국어성적을 입력하세요 : ");
((Sungjuk)(list.get(i))).kor = scan.nextInt();
System.out.print("영어성적을 입력하세요 : ");
((Sungjuk)(list.get(i))).eng = scan.nextInt();
System.out.print("수학성적을 입력하세요 : ");
((Sungjuk)(list.get(i))).math = scan.nextInt();
System.out.print("계속 입력하시겠습니까?(0 or 1 입력 , 0 : 그만 입력, 1 : 다음 입력) : ");
flag = scan.nextInt();
if (flag == 0)
break;
}
for (int i = 0; i < list.size(); i++) {
((Sungjuk)(list.get(i))).tot = ((Sungjuk)(list.get(i))).kor + ((Sungjuk)(list.get(i))).eng + ((Sungjuk)(list.get(i))).math;
((Sungjuk)(list.get(i))).avg = ((Sungjuk)(list.get(i))).tot / 3;
if (((Sungjuk)(list.get(i))).avg >= 90)
((Sungjuk)(list.get(i))).hak = 'A';
else if (((Sungjuk)(list.get(i))).avg >= 80)
((Sungjuk)(list.get(i))).hak = 'B';
else if (((Sungjuk)(list.get(i))).avg >= 70)
((Sungjuk)(list.get(i))).hak = 'C';
else if (((Sungjuk)(list.get(i))).avg >= 60)
((Sungjuk)(list.get(i))).hak = 'D';
else
((Sungjuk)(list.get(i))).hak = 'F';
}
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if (((Sungjuk)(list.get(i))).tot > ((Sungjuk)(list.get(j))).tot)
((Sungjuk)(list.get(j))).rank++;
}
}
System.out.println(" 성적표");
System.out.println("---------------------------------------------------------------------");
System.out.println("학번\t이름\t국어\t영어\t수학\t총점\t평균\t학점\t등수");
System.out.println("---------------------------------------------------------------------");
for (int i = 0; i < list.size(); i++) {
System.out.println(((Sungjuk)(list.get(i))).no + "\t" + ((Sungjuk)(list.get(i))).name + "\t" + ((Sungjuk)(list.get(i))).kor
+ "\t" + ((Sungjuk)(list.get(i))).eng + "\t" + ((Sungjuk)(list.get(i))).math + "\t" + ((Sungjuk)(list.get(i))).tot
+ "\t" + ((Sungjuk)(list.get(i))).avg + "\t" + ((Sungjuk)(list.get(i))).hak + "\t" + ((Sungjuk)(list.get(i))).rank);
}
System.out.println();
System.out.println("-----------------------정렬 후---------------------------------------");
for (int i = 0; i < list.size() - 1; i++) {
for (int j = i + 1; j < list.size(); j++) {
if (((Sungjuk)(list.get(i))).tot < ((Sungjuk)(list.get(j))).tot) {
int avg = ((Sungjuk)(list.get(i))).avg;
((Sungjuk)(list.get(i))).avg = ((Sungjuk)(list.get(j))).avg;
((Sungjuk)(list.get(j))).avg = avg;
String name = ((Sungjuk)(list.get(i))).name;
((Sungjuk)(list.get(i))).name = ((Sungjuk)(list.get(j))).name;
((Sungjuk)(list.get(j))).name = name;
int no = ((Sungjuk)(list.get(i))).no;
((Sungjuk)(list.get(i))).no = ((Sungjuk)(list.get(j))).no;
((Sungjuk)(list.get(j))).no = no;
int kor = ((Sungjuk)(list.get(i))).kor;
((Sungjuk)(list.get(i))).kor = ((Sungjuk)(list.get(j))).kor;
((Sungjuk)(list.get(j))).kor = kor;
int eng = ((Sungjuk)(list.get(i))).eng;
((Sungjuk)(list.get(i))).eng = ((Sungjuk)(list.get(j))).eng;
((Sungjuk)(list.get(j))).eng = eng;
int math = ((Sungjuk)(list.get(i))).math;
((Sungjuk)(list.get(i))).math = ((Sungjuk)(list.get(j))).math;
((Sungjuk)(list.get(j))).math = math;
int tot = ((Sungjuk)(list.get(i))).tot;
((Sungjuk)(list.get(i))).tot = ((Sungjuk)(list.get(j))).tot;
((Sungjuk)(list.get(j))).tot = tot;
char hak = ((Sungjuk)(list.get(i))).hak;
((Sungjuk)(list.get(i))).hak = ((Sungjuk)(list.get(j))).hak;
((Sungjuk)(list.get(j))).hak = hak;
int rank = ((Sungjuk)(list.get(i))).rank;
((Sungjuk)(list.get(i))).rank = ((Sungjuk)(list.get(j))).rank;
((Sungjuk)(list.get(j))).rank = rank;
}
}
}
System.out.println();
System.out.println(" 성적표");
System.out.println("---------------------------------------------------------------------");
System.out.println("학번\t이름\t국어\t영어\t수학\t총점\t평균\t학점\t등수");
System.out.println("---------------------------------------------------------------------");
for (int i = 0; i < list.size(); i++) {
System.out.println(((Sungjuk)(list.get(i))).no + "\t" + ((Sungjuk)(list.get(i))).name + "\t" + ((Sungjuk)(list.get(i))).kor
+ "\t" + ((Sungjuk)(list.get(i))).eng + "\t" + ((Sungjuk)(list.get(i))).math + "\t" + ((Sungjuk)(list.get(i))).tot
+ "\t" + ((Sungjuk)(list.get(i))).avg + "\t" + ((Sungjuk)(list.get(i))).hak + "\t" + ((Sungjuk)(list.get(i))).rank);
}
}
}
-----------------------------------
5. 과제 해결
-----------------------------------
import java.util.StringTokenizer;
public class Problem {
public static void main(String[] args) {
// TODO StringTokenizer와 split
//과제, str3을 주석과 같이 출력되게 StringTokenizer를 사용해서 출력하라
String str3 = "JavaTM 언어 사양 제2판:James Gosling, Bill Join, Gilad Bracha:무라카미 미사키: 피어슨 에듀케이션:2000:5500";
//책제목 : JavaTM 언어 사양 제2판
//저자 : James Gosling
// Bill Join
// Gilad Bracha
//번역자 : 무라카미 미사키
//출판사 : 피어슨 에듀케이션
//출판년도 : 2000
//가격 : 5500
StringTokenizer token2 = new StringTokenizer(str3, ":");
int count = 0;
while (token2.hasMoreTokens()) {
count++;
if (1 == count)
System.out.println("책제목 : "+token2.nextToken().trim());
else if( 2 == count ){
StringTokenizer token3 = new StringTokenizer(token2.nextToken().trim(), ",");
System.out.print("저자 : ");
while (token3.hasMoreElements()) {
System.out.println("\t"+token3.nextToken().trim());
}
}else if( 3 == count )
System.out.println("번역자 : "+token2.nextToken().trim());
else if( 4 == count )
System.out.println("출판사 : "+token2.nextToken().trim());
else if( 5 == count )
System.out.println("출판년도 : "+token2.nextToken().trim());
else if( 6 == count )
System.out.println("가격 : "+token2.nextToken().trim());
}
}
}
-----------------------------------
import java.util.HashSet;
import java.util.Random;
public class Problem {
public static void main(String[] args) {
/*
* 1. 간단한 로또 추첨기 만들기
* 임의의 숫자 1부터 46까지의 숫자 중 6개를 골라 출력하자.
*/
Random random = new Random();
HashSet set = new HashSet();
System.out.println("로또 추첨기");
while( 6 != set.size()){
set.add(random.nextInt(45) + 1);
}
System.out.println(set);
System.out.println("다른방식");
int num[] = new int[6];
for (int i = 0; i < num.length; i++) {
num[i] = random.nextInt(45) + 1;
for (int j = 0; j < i; j++) {
if(num[i]==num[j]){
i--;
break;
}
}
}
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+"\t");
}
}
}
-----------------------------------
import java.util.Random;
/*
* 가위, 바위, 보 게임을 만들자
* 0:주먹 1:가위 2:보
* 컴퓨터 : 1(난수)
* 입력 : 2(입력)(x를 입력하면 종료)
* 결과 : 컴퓨터 승!
* 전적 : 2전 2패
*/
public class Problem {
public static void main(String[] args) {
Random random = new Random();
int count = 0;
int win = 0;
int lose = 0;
int draw = 0;
int pc_random = 0;
System.out.println("가위 바위 보 게임");
for(;;){
System.out.println("0:가위 1:바위 2:보 9:종료");
java.util.Scanner scan = new java.util.Scanner(System.in);
System.out.println("컴퓨터는 정했습니다.");
pc_random = random.nextInt(3);
System.out.println("\t"+pc_random);
System.out.print("입력 :");
int input = scan.nextInt();
for(;;){
if( 0 == input || 1 == input || 2 == input || 9 == input )
break;
else
System.out.println("다시 입력하세요.");
}
if( 9 == input )
break;
if(input == pc_random){
draw++;
System.out.println("비겼습니다.");
}else if ((1 != input) && (1 != pc_random)) {
if(0 == input ){
win++;
System.out.println("이겼습니다.");
}else if(0 == pc_random){
lose++;
System.out.println("졌습니다.");
}
}else if(input > pc_random){
win++;
System.out.println("이겼습니다.");
}else if(input < pc_random){
lose++;
System.out.println("졌습니다.");
}
count++;
}
System.out.println(count+"전 "+win+"승 "+lose+"패");
}
}
-----------------------------------
/*
* 다음과 같은 문자열을 입력받았다고 가정하자
* String str = "2.5, 10, 9, 7, 3.14, 11"
* 이것들의 합계를 구하시오.
*/
import java.util.StringTokenizer;
public class Problem {
public static void main(String[] args) {
String str = "2.5, 10, 9, 7, 3.14, 11";
StringTokenizer token = new StringTokenizer(str, ",");
double sum = 0.0;
while (token.hasMoreTokens())
sum +=Double.parseDouble(token.nextToken().trim());
System.out.println(sum);
}
}
-----------------------------------
package day11;
import java.util.Random;
/*
게임 방식
pc 369
user 123 1 ball
user 456 1 ball
user 468 1 strike
user 389 2 strike
user 124 out
어떤 숫자가 맞는 지 확인해서
숫자가 있는데 위치까지 맞으면 스트라이크
숫자는 있는데 위치가 맞지 않으면 볼
하나도 맞는게 없으면 아웃
*/
/*
* 1. 임의의 숫자를 3개 만들어 놓는다.
* 2. 1부터 9까지의 단자리 숫자중에서 정한다.
* 3. 중복된 숫자는 제거
*
* 아래의 기능들 추가 가능
* 시도 횟수
* 걸린 시간 측정
* 레벨 조정 : 어렵게 만들기 -> 숫자 4개 , 5개 가능
* 최고 점수
* 순위리스트
* ...
*/
public class BaseBall {
public static void main(String[] args) {
// TODO 숫자 야구 게임
int com[] = new int[3];
int count = 0;
Random r = new Random();
for (int i = 0; i < com.length; i++) {
com[i] = r.nextInt(9)+1;
for (int j = 0; j < i; j++) {
if(com[j] == com[i]){
i--;
break;
}
}
}
System.out.println("컴퓨터가 생성한 숫자 : "+com[0]+","+com[1]+","+com[2]);
int user[] = new int[3];
int strike=0,ball=0;
java.util.Scanner scan = new java.util.Scanner(System.in);
int num = 0;
long start = System.currentTimeMillis() / 1000;
for(;;){
for(;;){
System.out.print("숫자 3개 입력 : ");
count++;
num = scan.nextInt();
user[0] = num / 100;
user[1] = (num / 10) % 10;
user[2] = num % 10;
boolean isfalse = false;
for (int i = 0; i < user.length; i++) {
for (int j = i+1; j < user.length; j++) {
if(user[i]==user[j]){
isfalse = true;
}
}
}
if(isfalse)
System.out.println("다시 입력하시오");
else
break;
}
for (int i = 0; i < user.length; i++) {
if(com[i]==user[i]){
strike++;
}
}
for (int i = 0; i < user.length; i++) {
for (int j = 0; j < user.length; j++) {
if(i != j){
if(com[i]==user[j])
ball++;
}
}
}
if( strike == 3 ){
System.out.println("축하합니다.");
System.out.println("시도 횟수 : "+count);
long end = System.currentTimeMillis() / 1000;
System.out.println("걸린시간 : " + (end - start));
break;
}else if(strike == 0 && ball == 0){
System.out.println("아웃 입니다. 입력하신 값 : "+num);
}else{
System.out.println("스트라이크 : "+strike+"\t볼 : "+ball + "\t입력하신 값 : "+num);
}
strike=0;
ball=0;
}
}
}
-----------------------------------
// 성적표v4
import java.util.ArrayList;
class Sungjuk {
String name;
int no;
int kor;
int eng;
int math;
int tot;
int avg;
char hak;
int rank;
}
public class Problem {
public static void main(String[] args) {
// TODO 성적표v4
ArrayList list = new ArrayList();
java.util.Scanner scan = new java.util.Scanner(System.in);
System.out.println("성적을 입력프로그램!!!!!!!");
int flag = 0;
for (int i = 0; ; i++) {
list.add(new Sungjuk());
((Sungjuk)(list.get(i))).no = i+1;
((Sungjuk)(list.get(i))).rank = 1;
System.out.print("이름을 입력하세요 : ");
((Sungjuk)(list.get(i))).name = scan.next();
System.out.print("국어성적을 입력하세요 : ");
((Sungjuk)(list.get(i))).kor = scan.nextInt();
System.out.print("영어성적을 입력하세요 : ");
((Sungjuk)(list.get(i))).eng = scan.nextInt();
System.out.print("수학성적을 입력하세요 : ");
((Sungjuk)(list.get(i))).math = scan.nextInt();
System.out.print("계속 입력하시겠습니까?(0 or 1 입력 , 0 : 그만 입력, 1 : 다음 입력) : ");
flag = scan.nextInt();
if (flag == 0)
break;
}
for (int i = 0; i < list.size(); i++) {
((Sungjuk)(list.get(i))).tot = ((Sungjuk)(list.get(i))).kor + ((Sungjuk)(list.get(i))).eng + ((Sungjuk)(list.get(i))).math;
((Sungjuk)(list.get(i))).avg = ((Sungjuk)(list.get(i))).tot / 3;
if (((Sungjuk)(list.get(i))).avg >= 90)
((Sungjuk)(list.get(i))).hak = 'A';
else if (((Sungjuk)(list.get(i))).avg >= 80)
((Sungjuk)(list.get(i))).hak = 'B';
else if (((Sungjuk)(list.get(i))).avg >= 70)
((Sungjuk)(list.get(i))).hak = 'C';
else if (((Sungjuk)(list.get(i))).avg >= 60)
((Sungjuk)(list.get(i))).hak = 'D';
else
((Sungjuk)(list.get(i))).hak = 'F';
}
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if (((Sungjuk)(list.get(i))).tot > ((Sungjuk)(list.get(j))).tot)
((Sungjuk)(list.get(j))).rank++;
}
}
System.out.println(" 성적표");
System.out.println("---------------------------------------------------------------------");
System.out.println("학번\t이름\t국어\t영어\t수학\t총점\t평균\t학점\t등수");
System.out.println("---------------------------------------------------------------------");
for (int i = 0; i < list.size(); i++) {
System.out.println(((Sungjuk)(list.get(i))).no + "\t" + ((Sungjuk)(list.get(i))).name + "\t" + ((Sungjuk)(list.get(i))).kor
+ "\t" + ((Sungjuk)(list.get(i))).eng + "\t" + ((Sungjuk)(list.get(i))).math + "\t" + ((Sungjuk)(list.get(i))).tot
+ "\t" + ((Sungjuk)(list.get(i))).avg + "\t" + ((Sungjuk)(list.get(i))).hak + "\t" + ((Sungjuk)(list.get(i))).rank);
}
System.out.println();
System.out.println("-----------------------정렬 후---------------------------------------");
for (int i = 0; i < list.size() - 1; i++) {
for (int j = i + 1; j < list.size(); j++) {
if (((Sungjuk)(list.get(i))).tot < ((Sungjuk)(list.get(j))).tot) {
int avg = ((Sungjuk)(list.get(i))).avg;
((Sungjuk)(list.get(i))).avg = ((Sungjuk)(list.get(j))).avg;
((Sungjuk)(list.get(j))).avg = avg;
String name = ((Sungjuk)(list.get(i))).name;
((Sungjuk)(list.get(i))).name = ((Sungjuk)(list.get(j))).name;
((Sungjuk)(list.get(j))).name = name;
int no = ((Sungjuk)(list.get(i))).no;
((Sungjuk)(list.get(i))).no = ((Sungjuk)(list.get(j))).no;
((Sungjuk)(list.get(j))).no = no;
int kor = ((Sungjuk)(list.get(i))).kor;
((Sungjuk)(list.get(i))).kor = ((Sungjuk)(list.get(j))).kor;
((Sungjuk)(list.get(j))).kor = kor;
int eng = ((Sungjuk)(list.get(i))).eng;
((Sungjuk)(list.get(i))).eng = ((Sungjuk)(list.get(j))).eng;
((Sungjuk)(list.get(j))).eng = eng;
int math = ((Sungjuk)(list.get(i))).math;
((Sungjuk)(list.get(i))).math = ((Sungjuk)(list.get(j))).math;
((Sungjuk)(list.get(j))).math = math;
int tot = ((Sungjuk)(list.get(i))).tot;
((Sungjuk)(list.get(i))).tot = ((Sungjuk)(list.get(j))).tot;
((Sungjuk)(list.get(j))).tot = tot;
char hak = ((Sungjuk)(list.get(i))).hak;
((Sungjuk)(list.get(i))).hak = ((Sungjuk)(list.get(j))).hak;
((Sungjuk)(list.get(j))).hak = hak;
int rank = ((Sungjuk)(list.get(i))).rank;
((Sungjuk)(list.get(i))).rank = ((Sungjuk)(list.get(j))).rank;
((Sungjuk)(list.get(j))).rank = rank;
}
}
}
System.out.println();
System.out.println(" 성적표");
System.out.println("---------------------------------------------------------------------");
System.out.println("학번\t이름\t국어\t영어\t수학\t총점\t평균\t학점\t등수");
System.out.println("---------------------------------------------------------------------");
for (int i = 0; i < list.size(); i++) {
System.out.println(((Sungjuk)(list.get(i))).no + "\t" + ((Sungjuk)(list.get(i))).name + "\t" + ((Sungjuk)(list.get(i))).kor
+ "\t" + ((Sungjuk)(list.get(i))).eng + "\t" + ((Sungjuk)(list.get(i))).math + "\t" + ((Sungjuk)(list.get(i))).tot
+ "\t" + ((Sungjuk)(list.get(i))).avg + "\t" + ((Sungjuk)(list.get(i))).hak + "\t" + ((Sungjuk)(list.get(i))).rank);
}
}
}
-----------------------------------
'OpenFrameWork' 카테고리의 다른 글
오픈프레임워크_Day14 (0) | 2015.04.20 |
---|---|
오픈프레임워크_Day13 (0) | 2015.04.20 |
오픈프레임워크_Day11 (0) | 2015.04.20 |
오픈프레임워크_Day10 (0) | 2015.04.20 |
오픈프레임워크_Day09 (0) | 2015.04.20 |