Random 응용과 예제 - 가위바위보 게임 만들기
Random rd = new Random(); 랜덤객체 생성으로 if, else if 문으로 각 경우의 수에 따른 출력값을 작성해주면 된다. 숫자가 아닌 경우는 NumberformatException 을 만들고, 메뉴 외의 수가 입력된 경우는 다시 입력할 수 있도록 코드를 작성한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
if (userNum!=4) { //1~3을 낸 경우
int pcNum = rnd.nextInt(3-1+1)+1;
//사용자가 이긴 경우
if((pcNum==1&&userNum==2) || (pcNum==2&&userNum==3) || (pcNum==3&&userNum==1)) {
msg = ">>> 사용자님이 이겼습니다!!\n";
}
//pc가 이긴 경우
else if((pcNum==2&&userNum==1) || (pcNum==3&&userNum==2) || (pcNum==1&&userNum==3)) {
msg = ">>> pc가 이겼습니다!!\n";
}
//사용자와 pc가 비긴 경우
else msg = ">>> 비겼습니다!!\n";
}
|
cs |
배열
동일한 데이터타입을 가지는 여러 개의 데이터를 저장할 수 있는 데이터 타입이다. 배열도 객체의 하나.
배열의 선언방법은 int[] subjectArr4 = {100,90,95,70,60,100,98}; 로 직접 데이터 값을 대입해주는 것이 일반적이다. 배열 선언시, 아래와 같이 객체 선언을 통해 배열의 크기를 선정한 후, 각 인덱스값에 하나씩 데이터 값을 대입해 줄 수도 있다.
배열명.length는 배열의 길이(크기)를 나타내는 int 값이다. 배열 내용을 인덱스 하나하나 검사하고자 할 때, for 문에서 조건식의 기준으로 사용할 수 있다.
1
2
3
4
5
6
7
8
|
int[] subjectArr;
subjectArr = new int[7];
int[] subjectArr2 = new int[7];
int[] subjectArr3 = new int[] {100,90,95,70,60,100,98};
int[] subjectArr4 = {100,90,95,70,60,100,98};
|
cs |
응용예제1 - 회원가입 객체를 배열에 대입하기
입력받은 비밀번호의 조건 확인을 위해 static 메서드를 이용한다. static 메서드는 다른 패키지 내 사용이 가능한 접근제어자인 static 이 적용된 메서드이다. 조건을 만족하면 참으로 변수에 입력받은 비밀번호를 대입하고 그 외의 경우에는 경고문구를 작성하고 다시 비밀번호를 입력받을 수 있게 한다.
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
|
package my.day09.a.array;
import java.util.Scanner;
import my.util.MyUtil;
public class MemberMain3 {
public static void main(String[] args) {
Member2[] mbrArr = new Member2[3];
/*
for(int i=0; i<mbrArr.length; i++) {
System.out.println(mbrArr[i]);
}
null
null
null
*/
Scanner sc = new Scanner(System.in);
System.out.println(">>> 회원가입");
int menuNo = 0;
do {
System.out.println("\n=========== >> 메뉴 << ==========");
System.out.println("1. 회원가입 2.모든회원조회 3.프로그램종료");
System.out.print("▷ 선택하세요 => ");
try {
menuNo = Integer.parseInt(sc.nextLine());
if(!(1<= menuNo && menuNo <=3)) {
System.out.println(">> 메뉴에 없는 번호입니다 \n");
continue;
}
switch (menuNo) {
case 1: //회원가입
Member2 mbr = new Member2();
System.out.print("\n1. 아이디 : ");
mbr.id = sc.nextLine();
boolean bool = false;
do {
System.out.print("2. 비밀번호 : ");
String passwd = sc.nextLine();
bool = MyUtil.isCheckPasswd(passwd);
if(bool) {
mbr.passwd = passwd;
} else {
System.out.println(">> 비밀번호는 8~15 자리 정수로 입력해야 하며, 대소문자, 숫자, 특수문자가 혼합되어야 합니다!!\n");
}
} while(!(bool==true));
System.out.print("3. 성명 : ");
mbr.name = sc.nextLine();
for (int i=0; i<mbrArr.length; i++) {
if (mbrArr[i] == null) {
mbrArr[i] = mbr; //한 번 index에 대입해야 한다. 계속 새로운 값으로 바뀌면 안됨.
break;
}
}
break;
case 2: //모든회원조회
int nullCount = 0;
for(int i=0; i<mbrArr.length; i++) {
if(mbrArr[i]!=null) { //null 여부 꼭 확인하기
System.out.println(mbrArr[i].showInfo());
} else nullCount++;
}
if(nullCount==mbrArr.length)
System.out.println("\n가입된 회원이 0명 입니다.");
break;
default:
break;
}
} catch (NumberFormatException e) {
System.out.println(">> 정수만 입력하세요! <<\n");
}
} while (!(menuNo==3));
sc.close();
System.out.println(">> 프로그램 종료 <<");
}
}
|
cs |
응용예제2 - 문자열 내 공백제거하기
문자열 내 공백을 제거하기 위해서는 문자열을 받은 배열과 공백을 제거한 문자열을 입력받을 배열을 생성해야 한다.
문자열 변수명.toCharArray(); 는 char 배열로 만들어 대입하는데 사용된다. 그리고 문자가 없이 ' '으로 초기화 되어 있는 공백수를 세서 새로운 배열 크기를 설정할 수 있다.
배열2=배열1 값을 대입해 줄 때, 만약 공백이라면 배열2의 인덱스 변수는 j--; 와 같이 공백 없이 입력될 수 있도록 해야 한다.
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
|
package my.day09.b.array;
public class SpaceDeleteMain1 {
public static void main(String[] args) {
String str = " korea seou l 쌍용 강북 교육센터 ";
char[] chArr = str.toCharArray();
int len = 0;
for (int i=0; i<chArr.length; i++) {
if(chArr[i]!=' ') {
len++;
}
}
char[] resultchArr = new char[len];
for(int i=0, j=0; i<chArr.length; i++, j++) {
if(chArr[i] !=' ') {
resultchArr[j] = chArr[i];
} else j--;
}
System.out.println(String.valueOf(resultchArr));
}
}
|
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
|
package my.day09.b.array;
import java.util.Random;
public class LottoMain2 {
public static void main(String[] args) {
int[] ballArr = new int[45];
int[] tempArr = new int[5]; //기존에 뽑았던 방번호를 기억시켜주는 저장소가 필요
for (int i=0; i<ballArr.length; i++) {
ballArr[i] = i+1; //배열의 방마다 데이터값 입력하기
//데이터값은 1~45
}
for (int i=0; i<tempArr.length; i++) {
tempArr[i] = -1;
}
Random rnd = new Random();
String result = "";
front:
for (int i=0; i<6; i++) {
int idx = rnd.nextInt(45);
for (int j=0; j<tempArr.length; j++) {
if(idx == tempArr[j]) {
i--;
continue front; //난수를 발생시켜주는 바깥 for문으로 가야한다.
}
}
if(i<5) {
tempArr[i] = idx;
}
String comma = (i<5)?",":"";
result += ballArr[idx]+comma;
}//end of for -----------------------------
System.out.println("\n로또 1등 당첨번호 : "+result);
}
}
|
cs |
'Java' 카테고리의 다른 글
[Java] 람다식(Lambda) (0) | 2021.01.28 |
---|---|
[Java] 배열, 버블정렬 (0) | 2021.01.19 |
[Java] While , do-While, Math.random() 메서드, Random() 클래스 (0) | 2021.01.16 |
[Java] For 문 응용, 다중 For문 (0) | 2021.01.15 |
[Java] For 문, 예제 (0) | 2021.01.13 |
- 오늘의코딩
- 정보처리기사 필기
- intellij
- JIRA
- 웹페이지만들기
- filezila
- LifecycleException
- putty
- 호스팅영역
- 노마드코더
- gradle build
- 개발도서
- git연동
- 독서후기
- 실용주의프로그래머
- EC2
- IT 5분 잡학사전
- 정보처리기사 실기
- 정보처리기사
- AWS
- 노개북
- ubuntu
- 북클럽
- java
- jdbc
- 배포
- gradle
- spring
- 기술블로그
- SQLD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |