1. 로또 문제
요구 사항 >
무작위의 로또 번호를 출력한다.
로또 번호는 서로 중복되서는 안된다.
예시>
4,2,6,5,7,3
30,33,37,15,6,31
코드 풀이 >
public static void main(String[] args) {
Random random = new Random();
int[] userRotto = new int[6];
outer:
for(int i = 0; i<userRotto.length; i++) {
int randomNumber = random.nextInt(45) + 1;
for (int j = 0; j<userRotto.length; j++) {
if(userRotto[j] == randomNumber) {
i--;
continue outer;
}
}
userRotto[i] = randomNumber;
}
for (int i = 0; i<userRotto.length; i++) {
String add = (i == 0)? "":",";
System.out.print(add + userRotto[i]);
}
}
리팩토링 >
public static void main(String[] args) {
Random random = new Random();
int[] userRotto = new int[6];
for(int i = 0; i<userRotto.length; i++) {
userRotto[i] = random.nextInt(45) + 1;
for (int j = 0; j<i; j++) {
if(userRotto[i] == userRotto[j]) {
i--;
break;
}
}
}
for (int i = 0; i<userRotto.length; i++) {
String add = (i == 0)? "":",";
System.out.print(add + userRotto[i]);
}
}
2. 회원 가입, 가입한 회원 목록 출력
요구 사항 >
// == 비밀번호가 규칙에 맞는지 틀리는지 알려주는 static 메소드 생성하기 == //
/*
비밀번호 규칙은 비밀번호의 길이는 8글자 이상 15글자 이하이어야 하고,
또한 비밀번호는 영문대문자, 영문소문자, 숫자, 특수기호가 혼합되어야만 한다.
규칙에 맞으면 true 를 리턴해주고, 규칙에 틀리면 false 를 리턴하도록 만든다.
*/
===========>>메뉴<<============
1. 회원가입 2.모든회원조회 3.프로그램종료
================================
○ 선택하세요 ->4
[경고] 메뉴에 없는 것입니다.
===========>>메뉴<<============
1. 회원가입 2.모든회원조회 3.프로그램종료
================================
○ 선택하세요 ->1
아이디 : dasddsa
ㅁ비밀번호 : 156
>>경고: 비밀번호는 8글자 이상 15글자 이하, 숫자, 소문자, 대문자, 특문이 포함되어야 함
ㅁ비밀번호 : qwerTr1!
ㅁ성명 : 이순신
>회원가입 성공!<
===========>>메뉴<<============
1. 회원가입 2.모든회원조회 3.프로그램종료
================================
○ 선택하세요 ->1
아이디 : addsa
ㅁ비밀번호 : qwerTr1!
ㅁ성명 : g
공백이 없는 한글로만 되어야 하고 글자 길이는 2글자 이상 6글자 이하이어야만 합니다
ㅁ성명 : 김연아.
공백이 없는 한글로만 되어야 하고 글자 길이는 2글자 이상 6글자 이하이어야만 합니다
ㅁ성명 : 김연아
>회원가입 성공!<
===========>>메뉴<<============
1. 회원가입 2.모든회원조회 3.프로그램종료
================================
○ 선택하세요 ->1
아이디 : qwerTr1!
ㅁ비밀번호 : qwerTr1!
ㅁ성명 : 아리영
>회원가입 성공!<
===========>>메뉴<<============
1. 회원가입 2.모든회원조회 3.프로그램종료
================================
○ 선택하세요 ->1
>> 정원 마감되어 회원가입이 불가합니다. <<
===========>>메뉴<<============
1. 회원가입 2.모든회원조회 3.프로그램종료
================================
○ 선택하세요 ->2
--------------------------
아이디 비밀번호 성명
--------------------------
dasddsa qwerTr1! 이순신
addsa qwerTr1! 김연아
qwerTr1! qwerTr1! 아리영
===========>>메뉴<<============
1. 회원가입 2.모든회원조회 3.프로그램종료
================================
○ 선택하세요 ->3
==== 프로그램 종료 ====
코드 풀이 >
public class Members {
String id;
String name;
String passwd;
public void printout() {
System.out.println("----------------" +
"아이디 비밀번호 성명" +
id + " " + passwd + " " + name
);
}
public boolean isTruePassword(String passwd) {
if (passwd == null) return false;
if (2 > passwd.length() && passwd.length() > 6) {
System.out.println("공백이 없는 한글로만 되어야 하고 글자 길이는 2글자 이상 6글자 이하이어야만 합니다.");
return false;
}
boolean flagUpper = false;
boolean flagLower = false;
boolean flagDigit = false;
boolean flagSpecial = false;
for (int i = 0; i<passwd.length(); i++) {
char ch = passwd.charAt(i);
if ('가' <= ch && ch <= '힣') return false;
if (Character.isUpperCase(ch)) {
flagUpper = true;
} else if (Character.isLowerCase(ch)) {
flagLower = true;
} else if (Character.isDigit(ch)) {
flagDigit = true;
} else {
flagSpecial = true;
}
}
return flagUpper && flagLower && flagDigit && flagSpecial;
}
}
public class MyUtil {
public static String space_delete(String input_str) {
String result = null;
if(input_str != null) {
result = "";
for(int i=0; i<input_str.length(); i++) {
char ch = input_str.charAt(i);
if(ch != ' ')
result += ch;
}
}
return result;
}
public boolean isCheakPasswd(String passwd) {
if(passwd == null) return false;
int length = passwd.length();
if(length < 8 || length > 15) {
return false;
}
boolean flag_upper = false;
boolean flag_lower = false;
boolean flag_number = false;
boolean flag_special = false;
for (int i = 0; i<length; i++) {
char ch = passwd.charAt(i);
if('가'<= ch && ch <= '힣') {
return false;
}
if(Character.isUpperCase(ch)) {
flag_upper = true;
} else if(Character.isLowerCase(ch)) {
flag_lower = true;
} else if (Character.isDigit(ch)) {
flag_number = true;
} else {
flag_special = true;
}
}
return flag_upper && flag_lower && flag_number && flag_special;
}
public class Main_members {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Members[] students = new Members[3];
String select = " ";
int mbr_cnt = 0;
do {
System.out.println("=========>>메뉴<<========");
System.out.println("1. 회원가입 2. 모든회원조회 3. 프로그램종료");
System.out.println("=========================");
System.out.println("ㅇ 선택하세요 >> ");
select = MyUtil.space_delete(sc.nextLine());
switch (select) {
case "1" :
if(mbr_cnt < students.length) {
String id = "";
outerId:
do {
System.out.println("아이디를 입력하세요 :");
id = sc.nextLine();
if(id.trim().isEmpty()) {
System.out.println("경고: 아이디값을 다른 값으로 입력하세요");
} else {
for (int i = 0; i < mbr_cnt; i++) {
if (id.equals(students[i].id)) {
System.out.println("중복된 아이디입니다. 다시 입력하세요.");
continue outerId;
}
}
break;
}
} while (true);
String passwd = null;
do {
System.out.println("패스워드를 입력하세요 :");
passwd = sc.nextLine();
if (!MyUtil.isCheckPasswd(passwd)) {
System.out.println("경고: 비밀번호는 8글자 이상 15글자 이하, 숫자, 소문자, 대문자, 특문이 포함되어야 함");
} else {
break;
}
} while (true);
String name = "";
do {
System.out.println("이름을 입력하세요 :");
name = sc.nextLine();
boolean isName = true;
for (int i = 0; i<name.length(); i++) {
char ch = name.charAt(i);
if(ch == ' ') {
isName = false;
} else if(!('가' <= ch && ch <= '힣')) {
isName = false;
}
}
if(isName) {
break;
} else {
System.out.println("공백이 없는 한글로만 되어야 하고 글자 길이는 2글자 이상 6글자 이하이어야만 합니다.");
}
}while (true);
Members members = new Members();
members.id = id;
members.passwd = passwd;
members.name = name;
students[mbr_cnt++] = members;
break;
} else {
System.out.println("정원 마감되어 회원가입이 불가능 합니다.");
break;
}
case "2" :
if(mbr_cnt == 0) {
System.out.println("가입한 회원이 없습니다");
break;
} else {
for (int i = 0; i<mbr_cnt; i++) {
students[i].printout();
}
}
break;
case "3" :
break;
default:
System.out.println("메뉴에 없는 숫자입니다.");
}
} while(!"3".equals(select));
sc.close();
System.out.println("프로그램을 종료합니다.");
}
}
3. 학점&평균&등수 출력
요구 사항 >
코드를 입력하세요
연습 문제 >
코드를 입력하세요