728x90

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("========= 프로그램종료 =========");

 


 

틀리거나 헷갈렸던 점 메모

  • DateTimeFormatter

 자주 안 써본 것이라 그런가 바로 까먹었는지 여러 방법을 혼자 해봤는데도 오류가 떠서 결국 앞에서 선생님이 알려주셨던 것을 보고 적었다.

 date[cnt] = dtf.format(); 까지는 맞췄는데 괄호 안에 LocalDateTime.now()를 적어야 한다는걸 잊었다.

 


 

전체 피드백

  • 역시 많이 해봤던 문제들이라 바로바로 풀어냈다.
  • 10번 문제를 풀면서 foreach를 써보려고 했는데 두 가지의 조건을 적을 때에는 어떻게 써야할지 모르겠어서 foreach 안에 foreach를 쓰려다 너무 복잡해질 것 같아 포기했다.
  • printf도 조금 익숙해진 것 같다. 

 


728x90