if문이나 for문 등 선생님이 문제 주셨던 것들을 문제만 적어두고 풀어보는 것으로 복습을 진행했다.
10번은 메뉴만 적어두고 풀었다.
1. 입력받은 숫자가 짝수인지, 홀수인지, 0인지 출력
System.out.print("숫자 입력> ");
int m1 = sc.nextInt();
if(m1 == 0) {
System.out.println(" > 0 입력");
}else if(m1%2 == 0) {
System.out.println(" > 입력하신 숫자는 짝수입니다.");
}else {
System.out.println(" > 입력하신 숫자는 홀수입니다.");
}
2. 입력받은 숫자에 따라 (3, 5, 3과5)의 배수, 둘다아님 출력
System.out.print("숫자 입력> ");
int m2 = sc.nextInt();
if(m2%15 == 0) {
System.out.println(" > 입력하신 숫자는 3과 5의 배수입니다.");
}else if(m2%5 == 0) {
System.out.println(" > 입력하신 숫자는 5의 배수입니다.");
}else if(m2%3 == 0){
System.out.println(" > 입력하신 숫자는 3의 배수입니다.");
}else {
System.out.println(" > 입력하신 숫자는 3과 5의 배수 어디에도 해당하지 않습니다.");
}
3. 숫자 두 개를 입력받고, 메뉴에 따라 +-*/% 값 출력
System.out.print("첫번째 숫자 입력> ");
int m31 = sc.nextInt();
System.out.print("두번째 숫자 입력> ");
int m32 = sc.nextInt();
System.out.println("1.더하기 2.빼기 3.곱하기 4.나누기 5.나머지");
for(int i=0; i<1; i++) {
System.out.print("메뉴 선택> ");
int m3 = sc.nextInt();
if(m3 == 1) {
System.out.println(" > "+m31+" + "+m32+" = "+(m31+m32));
}else if(m3 == 2) {
System.out.println(" > "+m31+" - "+m32+" = "+(m31-m32));
}else if(m3 == 3) {
System.out.println(" > "+m31+" + "+m32+" = "+(m31*m32));
}else if(m3 == 4) {
System.out.println(" > "+m31+" / "+m32+" = "+(m31/m32));
}else if(m3 == 5) {
System.out.println(" > "+m31+" % "+m32+" = "+(m31%m32));
}else {
System.out.println(" > 메뉴를 잘못 입력하셨습니다.");
i--;
}
}
4. 1~100의 합 출력
int m4 = 0;
for(int i=1; i<=100; i++) {
m4+=i;
}
System.out.println(" > "+m4);
5. 1~300까지 (3, 5, 3과5)의 배수 개수 출력
int m53 = 0;
int m55 = 0;
int m515 = 0;
for(int i=1; i<=300; i++) {
if(i%3 == 0) {
m53++;
}
if(i%5 == 0) {
m55++;
}
if(i%15 == 0) {
m515++;
}
}
System.out.println(" > 3의 배수의 개수: "+m53);
System.out.println(" > 5의 배수의 개수: "+m55);
System.out.println(" > 3과 5의 배수의 개수: "+m515);
6. 하나의 숫자를 입력받고, 1부터 입력받은 수까지의 합 출력
System.out.print("숫자 입력> ");
int m6 = sc.nextInt();
int sum6 = 0;
for(int i=1; i<=m6; i++) {
sum6 += i;
}
System.out.println(" > "+sum6);
7. 두 개의 숫자를 입력받고, 첫번째 입력받은 수부터 두번째 입력받은 수까지의 합 출력
System.out.print("첫번째 숫자 입력> ");
int m71 = sc.nextInt();
System.out.print("두번째 숫자 입력> ");
int m72 = sc.nextInt();
int sum7 = 0;
for(int i=m71; i<=m72; i++) {
sum7 += i;
}
System.out.println(" > "+sum7);
8. while문을 통해 반복적으로 숫자를 입력받다가 0이 입력되면 반복문 종료하기
while(true) {
System.out.print("숫자 입력> ");
int m8 = sc.nextInt();
if(m8 == 0) {
break;
}
}
System.out.println(" > 반복문 종료");
9. 배열 a의 홀수의 합, 짝수 인덱스의 합 출력
int[] a = {45,78,5,69,8};
int sum91 = 0;
int sum92 = 0;
for(int i=0; i<a.length; i++) {
if(a[i]%2 != 0) {
sum91 += a[i];
}
if(i%2 == 0) {
sum92 += a[i];
}
}
System.out.println(" > 홀수의 합: "+sum91);
System.out.println(" > 짝수 인덱스의 합: "+sum92);
10. 홈페이지
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
Scanner sc = new Scanner(System.in);
String[] name = new String[10];
String[] id = new String[10];
String[] pw = new String[10];
String[] date = new String[10];
int cnt = 0;
int loginIndex = -1;
while(true) {
System.out.println("========== 홈페이지 ==========");
if(loginIndex == -1) {
// 로그인 안 했을때
System.out.println("1.회원가입 2.로그인 3.회원목록 0.종료");
}else {
//로그인 했을때
System.out.println("1.정보수정 2.로그아웃 3.내정보 0.종료");
}
System.out.print("메뉴 선택> ");
int menu = sc.nextInt();
if(menu == 1) {
System.out.println("\n===========================");
if(loginIndex == -1) {
// 회원가입
System.out.println("\t\t ▷ 회원가입");
System.out.print("이름 입력> ");
name[cnt] = sc.next();
System.out.print("아이디 입력> ");
id[cnt] = sc.next();
System.out.print("비밀번호 입력> ");
pw[cnt] = sc.next();
date[cnt] = dtf.format(LocalDateTime.now());
System.out.println(" > "+name[cnt]+"님 회원가입이 성공적으로 완료되었습니다!");
cnt++;
}else {
// 정보수정
System.out.println("\t\t ▷ 정보수정");
System.out.println("> 정보수정을 위해 비밀번호를 확인합니다.");
System.out.print("비밀번호 입력> ");
String loginPw = sc.next();
boolean find = false;
for(String p : pw) {
if(loginPw.equals(p)) {
System.out.println(" > 확인되었습니다.");
System.out.println("1.아이디 변경\t2.비밀번호 변경");
System.out.print("메뉴 선택> ");
menu = sc.nextInt();
if(menu == 1) {
System.out.println("\t\t ▷ 아이디");
System.out.print("변경할 아이디> ");
id[loginIndex] = sc.next();
System.out.println(" > 아이디 변경이 성공적으로 완료되었습니다.");
}else if(menu == 2) {
System.out.println("\t\t ▷ 비밀번호");
pw[loginIndex] = sc.next();
System.out.println(" > 비밀번호 변경이 성공적으로 완료되었습니다.");
}
find = true;
break;
}
}
if(!find) {
System.out.println(" > 비밀번호가 일치하지 않습니다.");
}
}
}else if(menu == 2) {
System.out.println("\n===========================");
if(loginIndex == -1) {
// 로그인
System.out.println("\t\t ▷ 로그인");
System.out.print("아이디 입력> ");
String loginId = sc.next();
System.out.print("비밀번호 입력> ");
String loginPw = sc.next();
boolean find = false;
for(int i=0; i<cnt; i++) {
if(loginId.equals(id[i]) && loginPw.equals(pw[i])) {
System.out.println(" > 로그인 성공!");
loginIndex = i;
find = true;
break;
}
}
if(!find) {
System.out.println(" > 로그인 실패");
}
}else {
// 로그아웃
System.out.println(" > 성공적으로 로그아웃 되었습니다.");
loginIndex = -1;
}
}else if(menu == 3) {
System.out.println("\n===========================");
if(loginIndex == -1) {
// 회원목록
System.out.println("\t\t ▷ 회원목록");
System.out.println("번호\t이름\t아이디\t기입일자");
for(int i=0; i<cnt; i++) {
System.out.printf("%d\t%s\t%s\t%s\n",
i+1,name[i],id[i],date[i]);
}
}else {
// 내정보
System.out.println("\t\t ▷ 내 정보");
System.out.println("이름\t아이디\t기입일자");
System.out.printf("%s\t%s\t%s\n",
name[loginIndex],id[loginIndex],date[loginIndex]);
}
}else if(menu == 0) {
// 종료
System.out.println("\n > 프로그램을 종료합니다.\n");
break;
}else {
System.out.println(" > 존재하지 않는 메뉴입니다.\n");
}
System.out.println();
}
System.out.println("========= 프로그램종료 =========");
틀리거나 헷갈렸던 점 메모
자주 안 써본 것이라 그런가 바로 까먹었는지 여러 방법을 혼자 해봤는데도 오류가 떠서 결국 앞에서 선생님이 알려주셨던 것을 보고 적었다.
date[cnt] = dtf.format(); 까지는 맞췄는데 괄호 안에 LocalDateTime.now()를 적어야 한다는걸 잊었다.
전체 피드백
- 역시 많이 해봤던 문제들이라 바로바로 풀어냈다.
- 10번 문제를 풀면서 foreach를 써보려고 했는데 두 가지의 조건을 적을 때에는 어떻게 써야할지 모르겠어서 foreach 안에 foreach를 쓰려다 너무 복잡해질 것 같아 포기했다.
- printf도 조금 익숙해진 것 같다.