- 로그인_로그아웃_만들기
!! 여기서 하나라도 이해 못하는 부분이 있다면 1일차부터 다시 복습해야함 !!
!! 여기서 하나라도 이해 못하는 부분이 있다면 1일차부터 다시 복습해야함 !!
> 사용자가 입력 가능하게 하는 scanner
Scanner sc = new Scanner(System.in);
>사용자 정보와 while문에 넣을 블리언 변수를 정리
String name = "guping";
String id = "guping";
String pw = "1234";
boolean run = true;
boolean run1 = false;
boolean run2 = false;
>전체적인 부분을 반복하는 while문
while (run) {
로그인에 성공할 시 run1 에 true;를 대입하게하여 로그인 시 작동됌
while (run1) {
System.out.println("1.비밀번호 변경 2.로그아웃");
String loginmenu = sc.next();
run2=true; < 아래의 while을 작동하게 하기위함
while (run2) {
if (loginmenu.equals("1")) { < 1번을 입력한 경우 작동하는 if문
System.out.print("비밀번호 확인>");
String pw1 = sc.next();
if (pw.equals(pw1)) { < 기존 pw가 확인 pw를 넣은 pw1과 같다면 작동
System.out.print("변경 할 비밀번호 입력>");
String pw2 = sc.next();
if (pw2.equals(pw)) { < 기존 pw가 변경 할 비밀번호 pw2를 넣은 변수와 같다면 작동
System.out.println("같은 비밀번호로 변경 불가!\n");
continue;
} else if (pw2.equals(pw2)) { < 변경할 비밀번호를 넣은 pw2가 기존 pw와 다르면 작동
System.out.print("변경 할 비밀번호 확인>");
String pw3 = sc.next();
if(!(pw3.equals(pw2))) { < 변경할 비밀번호를 넣은 pw2가 변경 확인한 비밀번호 pw3과 다르면 작동
System.out.println("변경 할 비밀번호를 확인해주세요\n");
continue;
}else { <위에서 변수를 차단하는 if문을 작성했기에 기존 비밀번호와 변경할 비밀번호가 다르면 변경할 비밀번호 확인을 마치면 작동
System.out.println(name+"님 비밀번호 변경 성공!\n다시 로그인해주세요");
pw = pw3; < 기존 pw에 변경한 비밀번호를 대입하여 변경되게함
run2 = false; < 이제 사용하지 않는 while문은 false를 대입하여 반복을 멈춤
run1 = false; < 이제 사용하지 않는 while문은 false를 대입하여 반복을 멈춤
}
}
} else if (!(pw.equals(pw1))) { < 비밀번호 확인창에서 기존 비밀번호를 틀렸을 경우
System.out.println("비밀 번호가 틀립니다");
continue;
}
run2 = false;
} else if (loginmenu.equals("2")) { < 로그인 후 로그아웃을 눌렀을 경우
System.out.println(name + "님 로그아웃 성공!");
run2 = false;
run1 = false;
}
}
}
System.out.println("====회원 가입====");
System.out.println("1.회원가입 2.로그인 3.종료");
System.out.print("메뉴 입력>");
String menu = sc.next();
if (menu.equals("1")) { < 초기 화면에서 1번 회원 가입을 누른경우 작동
System.out.print("이름 입력>"); < 회원가입 정보를 저장하기 위한 변수 설정
name = sc.next();
System.out.print("아이디 입력>");
id = sc.next();
System.out.print("비밀번호 입력>");
pw = sc.next();
System.out.println(name + "님 회원가입을 환영합니다!");
} else if (menu.equals("2")) { < 초기 화면에서 2번 회원가입을 누른 경우
System.out.print("아이디 입력>"); <저장되어 있는 아이디와 비밀번호를 대조하기 위한 변수를 따로 설정
String loginid = sc.next();
System.out.print("비밀번호 입력>");
String loginpw = sc.next();
if (loginid.equals(id) && loginpw.equals(pw)) { < 저장되어 있는 id,pw와 입력한 id , pw가 맞다면 작동
System.out.println(name + "님 로그인 성공!");
run1 = true;
} else { << 저장되어 있는 id,pw와 입력한 id , pw가 틀리다면 작동
System.out.println("로그인 실패");
}
} else if (menu.equals("3")) { < 메뉴 3번 종료를 누르면 작동
System.out.println("시스템을 종료합니다");
run = false; < 반복문을 false;로 대입하여 반복문을 멈춤
}else { < 그밖에 1~3번이 아닌 번호를 누른 경우
System.out.println("없는 메뉴입니다");
}
}
> 주말이 지났기 때문에 복습겸 계산기 만들어보기
> scanner로 사용자가 텍스트를 입력할 수 있게 하였음
> 사용자 이름 아이디 비밀번호가 문자일 수 있기 때문에 String 변수를 사용
> 테스트를 위해 이름 아이디 비번을 채운 모습
> 반복문 while을 이용하여 전체적으로 반복하게 만들었고 저번주에 배운 내용을 토대로 작성함
- 로그인_로그아웃_선생님 예시
!! 선생님이 작성한 예시만 꼭 읽어보기 !!
!! 선생님이 작성한 예시만 꼭 읽어보기 !!
Scanner sc = new Scanner(System.in);
String name = "";
String id = "";
String pw = "";
boolean loginOk = false;
while(true) {
if(loginOk) {
System.out.println("1.비밀번호 수정 2.로그아웃 0.종료");
}else {
System.out.println("1.회원가입 2.로그인 0.종료");
}
System.out.print("메뉴선택> ");
int menu = sc.nextInt();
if(menu == 1) {
if(loginOk) {
System.out.print("수정할 비밀번호> ");
pw = sc.next();
System.out.println("비밀번호 수정 완료");
}else {
System.out.print("이름입력> ");
name = sc.next();
System.out.print("아이디입력> ");
id = sc.next();
System.out.print("비밀번호입력> ");
pw = sc.next();
System.out.println(name+"님 회원가입을 축하드립니다");
}
}else if(menu == 2) {
if(loginOk) {
loginOk = false;
System.out.println("로그아웃 성공");
}else {
System.out.print("아이디입력> ");
String loginId = sc.next();
System.out.print("비밀번호입력> ");
String loginPw = sc.next();
if(loginId.equals(id) && loginPw.equals(pw)) {
System.out.println("로그인 성공");
loginOk = true;
}else {
System.out.println("로그인 실패");
}
}
}else if(menu == 0) {
break;
}else {
System.out.println("다시입력");
}
System.out.println();
}
System.out.println("프로그램 종료");
}
}
>작성한게 맞는지 대조하기 위한 선생님의 예시문
- 배열_예제
!! 배열의 이해를 돕는 예시문 배열은 아주 어렵기 때문에 반복적인 학습 필요!!
!! 배열의 이해를 돕는 예시문 배열은 아주 어렵기 때문에 반복적인 학습 필요!!
String name1 = "홍길동";
String name2 = "이순신";
String name3 = "심청이";
System.out.println(name1);
System.out.println(name2);
System.out.println(name3); > 지금까지는 이렇게 각각의 변수를 만들고 대입하여
>프린트했음을 보여주는 예시
!! 배열을 사용할 경우의 예시 !!
String[] name = new String[3]; // 문자열이 들어갈 수 있는 배열3칸 만들기
!! String에 3칸짜리 배열을 만들었음
name[0] = "배열홍길동"; // 배열의 칸을 index라고 하는데 index는 칸 번호는 0부터 시작한다
name[1] = "배열이순신";
name[2] = "배열심청이";
name[1] = "변경"; //이런 경우 "배열이순신"이 아닌 "변경"이 출력된다
!!각각의 배열에 배열 홍길동 , 이순신 , 심청이를 넣어둔 모습
System.out.println(name[0]);
System.out.println(name[1]);
System.out.println(name[2]);
!! 이후 출력해보면 변수를 각각 설정하지 않아도 출력이 잘 되는걸 확인할 수 있음
int[] i = new int[10]; //정수가 들어갈 수 있는 배열 10칸 만들기
// int i[] = new int[10]; 이렇게 작성해도 상관없음
//int[] i = { 34. 123 .94 ....} 정해진 배열에 만들면서 추가할때
>배열문의 작성 예시 3가지
i[0] = 34;
i[1] = 34;
i[2] = 34;
i[3] = 34;
i[4] = 34;
i[5] = 34;
i[6] = 34;
i[7] = 34;
i[8] = 34;
i[9] = 34;
// System.out.println(i[1]); >하나씩 출력할 때
>한번에 모두 출력할 때
for(int j = 0; j<i.length;j++) { // length는 길이를 뜻하고 i는 10칸이기 때문에 10으로 계산된다
System.out.println(i[j]); // 이렇게하면 0~9까지 한번에 출력 가능하다
j가 1식 증가하며 각칸의 번호 역활을 해줌 해당 번호칸을 출력하는것
}
}
}
- 배열_응용_풀어보기
문제) 문자열 배열에 문자열 5개를 할당하고, 전체 출력
방법1)
String [] i = new String[5];
i[0] = "2조";
i[1] = "guping1";
i[2] = "guping2";
i[3] = "guping3";
i[4] = "guping4";
for(int j = 0 ; j < i.length;j++) {
System.out.println(i[j]);
}
>String 변수 배열 i의 5칸 안에 이미 변수가 할당 되어 있음
>for문을 이용하여 한번에 출력하는 경우 변수 j를 선언 0을 대입하여 배열 i의 길이보다 작다면
> j를 1씩 증가하게 하였음 이후 String 변수 배열 i의 칸번호에 j를 대입
> 1씩 증가하며 각칸을 출력함
문제) int배열 10칸에 값을 할당하고 , 총 합 출력
int [] sum = {2,34,53,23,5,2,6,75,4,5};
int j = 0;
// System.out.println(sum.length);
for(int i = 0 ; i < sum.length;i++) {
// System.out.println(sum[i]);
j = j+sum[i];
}
System.out.println(j);
> 먼저 int배열 sum을 작성함
> 배열 sum의 합을 저장할 공간인 int변수 j에 0을 저장
> for문을 이용하여 i가 sum의 길이보다 작으면 i를 1씩 증가하게 하였음
> 이렇게 for문의 조건에 설정한 변수 i를 sum의 숫자 역활을 하게 만듬
> 이후 j = j+sum[i]를 이용하여 sum의 각칸의 수가 변수 j에 합쳐지게 만듬
> for문 밖에서 j를 출력하게 함으로 합을 출력
// 문제) 짝수번째 index의 합을 구하기
int [] sum = {2,34,53,23,5,2,6,75,4,5};
int j = 0;
// System.out.println(sum.length);
for(int i = 0 ; i < sum.length;i=i+2) {
// System.out.println(sum[i]);
j = j+sum[i];
}
System.out.println(j);
> 변수 배열을 조금 이해하였다면 아주 쉬운 문제임
> 배열의 짝수 칸 수의 합을 구하는 방법은 배열의 칸을 불러올때 사용하는 i를 2씩 증가시켜
> j 에 합쳐지게 만들면 됨 이후 j를 for문 밖에서 출력하여 합을 구함
// 문제) 값이 짝수인것 더 하기
int [] sum = {2,34,53,23,5,2,6,75,4,5};
int j = 0;
// System.out.println(sum.length);
for(int i = 0 ; i < sum.length;i++) {
if(sum[i]%2 == 0) {
// System.out.println(sum[i]);
j = j+sum[i];
}
}
System.out.println(j);
> 먼저 변수 배열 안의 수를 가져와야 하기 때문에 for문을 작성함
> for문 안에서 if문으로 조건을 걸고 sum[i]가 2로 나누었을때 나머지가 0인를
> 변수 j에 저장하게 만듬 이후 for문 밖에서 변수 j를 출력함으로 짝수의 합을 구함
> i는 1씩 변수 배열 sum의 길이 만큼 증가하며 배열 칸의 숫자를 가져오기 때문에 구해지는 것
//문제 변수 배열 num에 1~100까지 수를 넣고 출력
int[] num = new int[100];
for(int i = 0 ; i < num.length ;i++ ) {
num[i] = i+1;
}
> 배열 num을 100칸으로 만들고 for문을 이용하여 하나씩 실행하게 하였음
> 이렇게 하나씩 증가하는 배열 num에 i+1을 이용하여 대입
> 이렇게 배열 num의 칸을 하나씩 열며 1씩 증가하는 i를 대입함
for(int j = 0 ; j < num.length ; j++) {
System.out.println(num[j]);
}
> 이후 각각 출력을 진행해야 하기 때문에
> for문을 한번 더 사용하여 1씩 증가한 i의 수가 더해진 배열 sum을 출력함
// 문제)num 1~10까지 입력받고 출력
Scanner sc = new Scanner(System.in);
int[] num = new int[10];
for(int num1 = 0 ; num1 < num.length; num1++) {
System.out.println("숫자를 입력해주세요");
num[num1] = sc.nextInt();
}
for(int num2 = 0 ; num2 < num.length ; num2++) {
System.out.println(num[num2]);
}
> 먼저 scanner를 이용하여 사용자가 입력이 가능하게함
> for문을 이용하여 num1이 배열 num보다 작다면 반복하여 num1이 1씩 증가하게함
> 프린트를 이용하여 사용자가 입력 공간을 찾을 수 있게 함
> 받은 입력을 num[num1]을 이용하여 각각 대입하게 하였음
> num1은 1씩 증가하며 각칸에 사용자가 입력한 수를 대입함
> 이후 for문을 새로 만들고 for문의 안에서 프린트하여 합을 구하였음
// 문제) 10칸짜리 정수 배열 선언 후 값을 입력 받고 , 값이 3의 배수의 합 출력
Scanner sc = new Scanner(System.in);
int[] num = new int[10];
int j = 0;
for(int i = 0 ; i < num.length ; i++) {
System.out.println("숫자를 입력하세요>");
num[i] = sc.nextInt();
}
for(int h = 0; h <num.length ; h++) {
if(num[h]%3 == 0) {
j += num[h];
}
}
System.out.println(j);
> scanner로 사용자가 입력이 가능하게 하였음
> int 배열문 num을 선언하고 칸을 10칸으로 줌
> 3의 배수의 합을 대입할 int변수 j를 선언함
> for문을 이용하여 배열 num의 길이만큼 반복하며 1씩 증가하는 변수 i를 만들고
> 그 반복동안 사용자가 숫자를 입력 할 수 있게하였음
> 이렇게 입력받은 숫자를 배열 num에 i를 이용하여 각 칸에 대입하였음
> 이후 for문을 하나 더 만들고 1씩 증가하는 변수 h를 선언 1씩증가하며 num의 숫자칸을 여는 방식으로
> 조건문 if를 이용하여 대입된 숫자가 3으로 나누었을때 나머지가 0인 수를
> 변수 j에 더해지게 하였음 for문의 밖에서 출력함으로 j에 더해진 합을 출력함
// 문제) 10칸짜리 정수 배열 선언 후 값을 입력 받고 , 입력받은 것중 3의 배수의 갯수 5의 배수의 갯수 3,5가 겹치는 배수의 갯수
Scanner sc = new Scanner(System.in);
int[] num = new int[10];
int con1 = 0;
int con2 = 0;
int con3 = 0;
for(int i = 0 ; i < num.length ; i++) {
System.out.println("숫자를 입력해 주세요");
num[i]=sc.nextInt();
}
for(int j = 0 ; j < num.length; j++) {
if(num[j] % 3 == 0 && num[j] % 5 == 0) {
con1++;
}
if(num[j] % 3 == 0) {
con2++;;
}
if(num[j] % 5 == 0) {
con3++;
}
}
System.out.println("3과5의 배수에 겹치는 갯수는" + con1 +"개 입니다" );
System.out.println("3의 배수 갯수는"+con2 +"개 입니다");
System.out.println("3의 배수 갯수는"+con3 +"개 입니다");
> 이문제를 풀때 알아둬야 하는것은 갯수도 합이기 때문에 밖에서 따로 변수를 선언해주는게 좋음
> 풀이에서는 각각 con1 , con2 , con3으로 설정하였음
> for문을 이용하여 1씩 증가하는 i를 사용해 배열 num에 사용자가 입력한 수를 대입하게 하였음
> for문을 한번 더 작성하여 1씩 증가하는 j를 사용해 num안의 수가 3 ,5 의 배수인지 확인
> 조건문 if를 사용하여 해당한다면 각각 정해놓은 con변수가 1씩 증가하게 하였음
> 이후 for문 밖에서 출력하여 각 con의 합을 구하였음
// 문제) 10칸의 정수배열을 만들고,반복하면서 입력을 받는데 짝수만 배열에 저장 후 출력 (짝수만 10개 입력 받을 때 까지 계속 반복)
Scanner sc = new Scanner(System.in);
int[] num = new int[10];
for(int i = 0;i<num.length;i++) {
System.out.println("숫자 입력>");
int number = sc.nextInt();
if(number % 2 == 0) {
num[i] = number;
}else {
i--;
}
}
for(int i =0; i<num.length; i++) {
System.out.println(num[i]);
}
> 수업중 이부분에서 머리가 고장남
> 먼저 int 배열을 만들어주고 10칸을 설정함
> for문을 이용하여 변수 i가 num의 칸수만큼 1씩 증가하며 반복하게 만듬
> 숫자 입력칸을 만들고 입력 받은 수를 변수 number에 저장함
> if문을 이용하여 입력한 수를 대입받은 변수 number 가 2로 나누었을때 나머지가 0이라면
> 배열 num에 대입하게 만듬
> 만약 나머지가 1이 아니라면 i를 1씩 빼며 증가하지 않게 함으로 짝수를 10번입력하지 않으면
> for문의 조건이 계속 참이게 만듬 이후 for문을 하나 더 만들고
> 그 안에서 출력함으로 입력받은 짝수를 각각 출력하였음
// 문제) 10칸의 정수배열을 만들고, 반복하면서 입력을 받는데 짝수만 배열에 저장 후 출력
Scanner sc = new Scanner(System.in);
int[] num = new int[10];
int j = 0;
while (j < 10) {
System.out.print("숫자입력> ");
int number = sc.nextInt();
if (number % 2 == 0) {
num[j] = number;
j++;
}
}
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
> 위와 같은 문제임 하지만 for문이 아닌 while을 이용하여 문제를 풀어야함
> 변수 j에 0을 대입하여 while 문안에 변수 j가 10보다 작다면 무한히 반복하게함
> 이후 사용자가 수를 입력할 공간을 만들고 변수 number에 저장함
> 조건문 if를 이용하여 number에 대입된 수가 2로 나누었을때 나머지가 0이라면
> 변수 j를 1씩 증가시킴 배열 num에 j를 넣어 1씩 증가하며 짝수인 number가 대입되게 if문안에 작성
> 이렇게 짝수가 10번 입력되면 j는 10과 같아지기 때문에 반복문을 빠져나오고
> 밖의 for문의 안에서 출력하여 배열 num의 안에 있는 수를 각각 출력하게 하였음
'나의 수업일지' 카테고리의 다른 글
인천 일보 아카데미 8일차 메소드로 만들어보기/ArrayList 알아보기 (0) | 2023.03.05 |
---|---|
인천 일보 아카데미 7일차 클래스_필드_메소드_오버로딩 (0) | 2023.03.02 |
인천 일보 아카데미 (주말 숙제) (0) | 2023.02.27 |
인천 일보 아카데미 4일차 up&down게임_만들기 / 숫자 랜덤 출력 (0) | 2023.02.24 |
인천 일보 아카데미 3일차 배운 변수와 문법을 사용하여 만들어보기 (0) | 2023.02.23 |
- 로그인_로그아웃_만들기
!! 여기서 하나라도 이해 못하는 부분이 있다면 1일차부터 다시 복습해야함 !!
!! 여기서 하나라도 이해 못하는 부분이 있다면 1일차부터 다시 복습해야함 !!
> 사용자가 입력 가능하게 하는 scanner
Scanner sc = new Scanner(System.in);
>사용자 정보와 while문에 넣을 블리언 변수를 정리
String name = "guping";
String id = "guping";
String pw = "1234";
boolean run = true;
boolean run1 = false;
boolean run2 = false;
>전체적인 부분을 반복하는 while문
while (run) {
로그인에 성공할 시 run1 에 true;를 대입하게하여 로그인 시 작동됌
while (run1) {
System.out.println("1.비밀번호 변경 2.로그아웃");
String loginmenu = sc.next();
run2=true; < 아래의 while을 작동하게 하기위함
while (run2) {
if (loginmenu.equals("1")) { < 1번을 입력한 경우 작동하는 if문
System.out.print("비밀번호 확인>");
String pw1 = sc.next();
if (pw.equals(pw1)) { < 기존 pw가 확인 pw를 넣은 pw1과 같다면 작동
System.out.print("변경 할 비밀번호 입력>");
String pw2 = sc.next();
if (pw2.equals(pw)) { < 기존 pw가 변경 할 비밀번호 pw2를 넣은 변수와 같다면 작동
System.out.println("같은 비밀번호로 변경 불가!\n");
continue;
} else if (pw2.equals(pw2)) { < 변경할 비밀번호를 넣은 pw2가 기존 pw와 다르면 작동
System.out.print("변경 할 비밀번호 확인>");
String pw3 = sc.next();
if(!(pw3.equals(pw2))) { < 변경할 비밀번호를 넣은 pw2가 변경 확인한 비밀번호 pw3과 다르면 작동
System.out.println("변경 할 비밀번호를 확인해주세요\n");
continue;
}else { <위에서 변수를 차단하는 if문을 작성했기에 기존 비밀번호와 변경할 비밀번호가 다르면 변경할 비밀번호 확인을 마치면 작동
System.out.println(name+"님 비밀번호 변경 성공!\n다시 로그인해주세요");
pw = pw3; < 기존 pw에 변경한 비밀번호를 대입하여 변경되게함
run2 = false; < 이제 사용하지 않는 while문은 false를 대입하여 반복을 멈춤
run1 = false; < 이제 사용하지 않는 while문은 false를 대입하여 반복을 멈춤
}
}
} else if (!(pw.equals(pw1))) { < 비밀번호 확인창에서 기존 비밀번호를 틀렸을 경우
System.out.println("비밀 번호가 틀립니다");
continue;
}
run2 = false;
} else if (loginmenu.equals("2")) { < 로그인 후 로그아웃을 눌렀을 경우
System.out.println(name + "님 로그아웃 성공!");
run2 = false;
run1 = false;
}
}
}
System.out.println("====회원 가입====");
System.out.println("1.회원가입 2.로그인 3.종료");
System.out.print("메뉴 입력>");
String menu = sc.next();
if (menu.equals("1")) { < 초기 화면에서 1번 회원 가입을 누른경우 작동
System.out.print("이름 입력>"); < 회원가입 정보를 저장하기 위한 변수 설정
name = sc.next();
System.out.print("아이디 입력>");
id = sc.next();
System.out.print("비밀번호 입력>");
pw = sc.next();
System.out.println(name + "님 회원가입을 환영합니다!");
} else if (menu.equals("2")) { < 초기 화면에서 2번 회원가입을 누른 경우
System.out.print("아이디 입력>"); <저장되어 있는 아이디와 비밀번호를 대조하기 위한 변수를 따로 설정
String loginid = sc.next();
System.out.print("비밀번호 입력>");
String loginpw = sc.next();
if (loginid.equals(id) && loginpw.equals(pw)) { < 저장되어 있는 id,pw와 입력한 id , pw가 맞다면 작동
System.out.println(name + "님 로그인 성공!");
run1 = true;
} else { << 저장되어 있는 id,pw와 입력한 id , pw가 틀리다면 작동
System.out.println("로그인 실패");
}
} else if (menu.equals("3")) { < 메뉴 3번 종료를 누르면 작동
System.out.println("시스템을 종료합니다");
run = false; < 반복문을 false;로 대입하여 반복문을 멈춤
}else { < 그밖에 1~3번이 아닌 번호를 누른 경우
System.out.println("없는 메뉴입니다");
}
}
> 주말이 지났기 때문에 복습겸 계산기 만들어보기
> scanner로 사용자가 텍스트를 입력할 수 있게 하였음
> 사용자 이름 아이디 비밀번호가 문자일 수 있기 때문에 String 변수를 사용
> 테스트를 위해 이름 아이디 비번을 채운 모습
> 반복문 while을 이용하여 전체적으로 반복하게 만들었고 저번주에 배운 내용을 토대로 작성함
- 로그인_로그아웃_선생님 예시
!! 선생님이 작성한 예시만 꼭 읽어보기 !!
!! 선생님이 작성한 예시만 꼭 읽어보기 !!
Scanner sc = new Scanner(System.in);
String name = "";
String id = "";
String pw = "";
boolean loginOk = false;
while(true) {
if(loginOk) {
System.out.println("1.비밀번호 수정 2.로그아웃 0.종료");
}else {
System.out.println("1.회원가입 2.로그인 0.종료");
}
System.out.print("메뉴선택> ");
int menu = sc.nextInt();
if(menu == 1) {
if(loginOk) {
System.out.print("수정할 비밀번호> ");
pw = sc.next();
System.out.println("비밀번호 수정 완료");
}else {
System.out.print("이름입력> ");
name = sc.next();
System.out.print("아이디입력> ");
id = sc.next();
System.out.print("비밀번호입력> ");
pw = sc.next();
System.out.println(name+"님 회원가입을 축하드립니다");
}
}else if(menu == 2) {
if(loginOk) {
loginOk = false;
System.out.println("로그아웃 성공");
}else {
System.out.print("아이디입력> ");
String loginId = sc.next();
System.out.print("비밀번호입력> ");
String loginPw = sc.next();
if(loginId.equals(id) && loginPw.equals(pw)) {
System.out.println("로그인 성공");
loginOk = true;
}else {
System.out.println("로그인 실패");
}
}
}else if(menu == 0) {
break;
}else {
System.out.println("다시입력");
}
System.out.println();
}
System.out.println("프로그램 종료");
}
}
>작성한게 맞는지 대조하기 위한 선생님의 예시문
- 배열_예제
!! 배열의 이해를 돕는 예시문 배열은 아주 어렵기 때문에 반복적인 학습 필요!!
!! 배열의 이해를 돕는 예시문 배열은 아주 어렵기 때문에 반복적인 학습 필요!!
String name1 = "홍길동";
String name2 = "이순신";
String name3 = "심청이";
System.out.println(name1);
System.out.println(name2);
System.out.println(name3); > 지금까지는 이렇게 각각의 변수를 만들고 대입하여
>프린트했음을 보여주는 예시
!! 배열을 사용할 경우의 예시 !!
String[] name = new String[3]; // 문자열이 들어갈 수 있는 배열3칸 만들기
!! String에 3칸짜리 배열을 만들었음
name[0] = "배열홍길동"; // 배열의 칸을 index라고 하는데 index는 칸 번호는 0부터 시작한다
name[1] = "배열이순신";
name[2] = "배열심청이";
name[1] = "변경"; //이런 경우 "배열이순신"이 아닌 "변경"이 출력된다
!!각각의 배열에 배열 홍길동 , 이순신 , 심청이를 넣어둔 모습
System.out.println(name[0]);
System.out.println(name[1]);
System.out.println(name[2]);
!! 이후 출력해보면 변수를 각각 설정하지 않아도 출력이 잘 되는걸 확인할 수 있음
int[] i = new int[10]; //정수가 들어갈 수 있는 배열 10칸 만들기
// int i[] = new int[10]; 이렇게 작성해도 상관없음
//int[] i = { 34. 123 .94 ....} 정해진 배열에 만들면서 추가할때
>배열문의 작성 예시 3가지
i[0] = 34;
i[1] = 34;
i[2] = 34;
i[3] = 34;
i[4] = 34;
i[5] = 34;
i[6] = 34;
i[7] = 34;
i[8] = 34;
i[9] = 34;
// System.out.println(i[1]); >하나씩 출력할 때
>한번에 모두 출력할 때
for(int j = 0; j<i.length;j++) { // length는 길이를 뜻하고 i는 10칸이기 때문에 10으로 계산된다
System.out.println(i[j]); // 이렇게하면 0~9까지 한번에 출력 가능하다
j가 1식 증가하며 각칸의 번호 역활을 해줌 해당 번호칸을 출력하는것
}
}
}
- 배열_응용_풀어보기
문제) 문자열 배열에 문자열 5개를 할당하고, 전체 출력
방법1)
String [] i = new String[5];
i[0] = "2조";
i[1] = "guping1";
i[2] = "guping2";
i[3] = "guping3";
i[4] = "guping4";
for(int j = 0 ; j < i.length;j++) {
System.out.println(i[j]);
}
>String 변수 배열 i의 5칸 안에 이미 변수가 할당 되어 있음
>for문을 이용하여 한번에 출력하는 경우 변수 j를 선언 0을 대입하여 배열 i의 길이보다 작다면
> j를 1씩 증가하게 하였음 이후 String 변수 배열 i의 칸번호에 j를 대입
> 1씩 증가하며 각칸을 출력함
문제) int배열 10칸에 값을 할당하고 , 총 합 출력
int [] sum = {2,34,53,23,5,2,6,75,4,5};
int j = 0;
// System.out.println(sum.length);
for(int i = 0 ; i < sum.length;i++) {
// System.out.println(sum[i]);
j = j+sum[i];
}
System.out.println(j);
> 먼저 int배열 sum을 작성함
> 배열 sum의 합을 저장할 공간인 int변수 j에 0을 저장
> for문을 이용하여 i가 sum의 길이보다 작으면 i를 1씩 증가하게 하였음
> 이렇게 for문의 조건에 설정한 변수 i를 sum의 숫자 역활을 하게 만듬
> 이후 j = j+sum[i]를 이용하여 sum의 각칸의 수가 변수 j에 합쳐지게 만듬
> for문 밖에서 j를 출력하게 함으로 합을 출력
// 문제) 짝수번째 index의 합을 구하기
int [] sum = {2,34,53,23,5,2,6,75,4,5};
int j = 0;
// System.out.println(sum.length);
for(int i = 0 ; i < sum.length;i=i+2) {
// System.out.println(sum[i]);
j = j+sum[i];
}
System.out.println(j);
> 변수 배열을 조금 이해하였다면 아주 쉬운 문제임
> 배열의 짝수 칸 수의 합을 구하는 방법은 배열의 칸을 불러올때 사용하는 i를 2씩 증가시켜
> j 에 합쳐지게 만들면 됨 이후 j를 for문 밖에서 출력하여 합을 구함
// 문제) 값이 짝수인것 더 하기
int [] sum = {2,34,53,23,5,2,6,75,4,5};
int j = 0;
// System.out.println(sum.length);
for(int i = 0 ; i < sum.length;i++) {
if(sum[i]%2 == 0) {
// System.out.println(sum[i]);
j = j+sum[i];
}
}
System.out.println(j);
> 먼저 변수 배열 안의 수를 가져와야 하기 때문에 for문을 작성함
> for문 안에서 if문으로 조건을 걸고 sum[i]가 2로 나누었을때 나머지가 0인를
> 변수 j에 저장하게 만듬 이후 for문 밖에서 변수 j를 출력함으로 짝수의 합을 구함
> i는 1씩 변수 배열 sum의 길이 만큼 증가하며 배열 칸의 숫자를 가져오기 때문에 구해지는 것
//문제 변수 배열 num에 1~100까지 수를 넣고 출력
int[] num = new int[100];
for(int i = 0 ; i < num.length ;i++ ) {
num[i] = i+1;
}
> 배열 num을 100칸으로 만들고 for문을 이용하여 하나씩 실행하게 하였음
> 이렇게 하나씩 증가하는 배열 num에 i+1을 이용하여 대입
> 이렇게 배열 num의 칸을 하나씩 열며 1씩 증가하는 i를 대입함
for(int j = 0 ; j < num.length ; j++) {
System.out.println(num[j]);
}
> 이후 각각 출력을 진행해야 하기 때문에
> for문을 한번 더 사용하여 1씩 증가한 i의 수가 더해진 배열 sum을 출력함
// 문제)num 1~10까지 입력받고 출력
Scanner sc = new Scanner(System.in);
int[] num = new int[10];
for(int num1 = 0 ; num1 < num.length; num1++) {
System.out.println("숫자를 입력해주세요");
num[num1] = sc.nextInt();
}
for(int num2 = 0 ; num2 < num.length ; num2++) {
System.out.println(num[num2]);
}
> 먼저 scanner를 이용하여 사용자가 입력이 가능하게함
> for문을 이용하여 num1이 배열 num보다 작다면 반복하여 num1이 1씩 증가하게함
> 프린트를 이용하여 사용자가 입력 공간을 찾을 수 있게 함
> 받은 입력을 num[num1]을 이용하여 각각 대입하게 하였음
> num1은 1씩 증가하며 각칸에 사용자가 입력한 수를 대입함
> 이후 for문을 새로 만들고 for문의 안에서 프린트하여 합을 구하였음
// 문제) 10칸짜리 정수 배열 선언 후 값을 입력 받고 , 값이 3의 배수의 합 출력
Scanner sc = new Scanner(System.in);
int[] num = new int[10];
int j = 0;
for(int i = 0 ; i < num.length ; i++) {
System.out.println("숫자를 입력하세요>");
num[i] = sc.nextInt();
}
for(int h = 0; h <num.length ; h++) {
if(num[h]%3 == 0) {
j += num[h];
}
}
System.out.println(j);
> scanner로 사용자가 입력이 가능하게 하였음
> int 배열문 num을 선언하고 칸을 10칸으로 줌
> 3의 배수의 합을 대입할 int변수 j를 선언함
> for문을 이용하여 배열 num의 길이만큼 반복하며 1씩 증가하는 변수 i를 만들고
> 그 반복동안 사용자가 숫자를 입력 할 수 있게하였음
> 이렇게 입력받은 숫자를 배열 num에 i를 이용하여 각 칸에 대입하였음
> 이후 for문을 하나 더 만들고 1씩 증가하는 변수 h를 선언 1씩증가하며 num의 숫자칸을 여는 방식으로
> 조건문 if를 이용하여 대입된 숫자가 3으로 나누었을때 나머지가 0인 수를
> 변수 j에 더해지게 하였음 for문의 밖에서 출력함으로 j에 더해진 합을 출력함
// 문제) 10칸짜리 정수 배열 선언 후 값을 입력 받고 , 입력받은 것중 3의 배수의 갯수 5의 배수의 갯수 3,5가 겹치는 배수의 갯수
Scanner sc = new Scanner(System.in);
int[] num = new int[10];
int con1 = 0;
int con2 = 0;
int con3 = 0;
for(int i = 0 ; i < num.length ; i++) {
System.out.println("숫자를 입력해 주세요");
num[i]=sc.nextInt();
}
for(int j = 0 ; j < num.length; j++) {
if(num[j] % 3 == 0 && num[j] % 5 == 0) {
con1++;
}
if(num[j] % 3 == 0) {
con2++;;
}
if(num[j] % 5 == 0) {
con3++;
}
}
System.out.println("3과5의 배수에 겹치는 갯수는" + con1 +"개 입니다" );
System.out.println("3의 배수 갯수는"+con2 +"개 입니다");
System.out.println("3의 배수 갯수는"+con3 +"개 입니다");
> 이문제를 풀때 알아둬야 하는것은 갯수도 합이기 때문에 밖에서 따로 변수를 선언해주는게 좋음
> 풀이에서는 각각 con1 , con2 , con3으로 설정하였음
> for문을 이용하여 1씩 증가하는 i를 사용해 배열 num에 사용자가 입력한 수를 대입하게 하였음
> for문을 한번 더 작성하여 1씩 증가하는 j를 사용해 num안의 수가 3 ,5 의 배수인지 확인
> 조건문 if를 사용하여 해당한다면 각각 정해놓은 con변수가 1씩 증가하게 하였음
> 이후 for문 밖에서 출력하여 각 con의 합을 구하였음
// 문제) 10칸의 정수배열을 만들고,반복하면서 입력을 받는데 짝수만 배열에 저장 후 출력 (짝수만 10개 입력 받을 때 까지 계속 반복)
Scanner sc = new Scanner(System.in);
int[] num = new int[10];
for(int i = 0;i<num.length;i++) {
System.out.println("숫자 입력>");
int number = sc.nextInt();
if(number % 2 == 0) {
num[i] = number;
}else {
i--;
}
}
for(int i =0; i<num.length; i++) {
System.out.println(num[i]);
}
> 수업중 이부분에서 머리가 고장남
> 먼저 int 배열을 만들어주고 10칸을 설정함
> for문을 이용하여 변수 i가 num의 칸수만큼 1씩 증가하며 반복하게 만듬
> 숫자 입력칸을 만들고 입력 받은 수를 변수 number에 저장함
> if문을 이용하여 입력한 수를 대입받은 변수 number 가 2로 나누었을때 나머지가 0이라면
> 배열 num에 대입하게 만듬
> 만약 나머지가 1이 아니라면 i를 1씩 빼며 증가하지 않게 함으로 짝수를 10번입력하지 않으면
> for문의 조건이 계속 참이게 만듬 이후 for문을 하나 더 만들고
> 그 안에서 출력함으로 입력받은 짝수를 각각 출력하였음
// 문제) 10칸의 정수배열을 만들고, 반복하면서 입력을 받는데 짝수만 배열에 저장 후 출력
Scanner sc = new Scanner(System.in);
int[] num = new int[10];
int j = 0;
while (j < 10) {
System.out.print("숫자입력> ");
int number = sc.nextInt();
if (number % 2 == 0) {
num[j] = number;
j++;
}
}
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
> 위와 같은 문제임 하지만 for문이 아닌 while을 이용하여 문제를 풀어야함
> 변수 j에 0을 대입하여 while 문안에 변수 j가 10보다 작다면 무한히 반복하게함
> 이후 사용자가 수를 입력할 공간을 만들고 변수 number에 저장함
> 조건문 if를 이용하여 number에 대입된 수가 2로 나누었을때 나머지가 0이라면
> 변수 j를 1씩 증가시킴 배열 num에 j를 넣어 1씩 증가하며 짝수인 number가 대입되게 if문안에 작성
> 이렇게 짝수가 10번 입력되면 j는 10과 같아지기 때문에 반복문을 빠져나오고
> 밖의 for문의 안에서 출력하여 배열 num의 안에 있는 수를 각각 출력하게 하였음
'나의 수업일지' 카테고리의 다른 글
인천 일보 아카데미 8일차 메소드로 만들어보기/ArrayList 알아보기 (0) | 2023.03.05 |
---|---|
인천 일보 아카데미 7일차 클래스_필드_메소드_오버로딩 (0) | 2023.03.02 |
인천 일보 아카데미 (주말 숙제) (0) | 2023.02.27 |
인천 일보 아카데미 4일차 up&down게임_만들기 / 숫자 랜덤 출력 (0) | 2023.02.24 |
인천 일보 아카데미 3일차 배운 변수와 문법을 사용하여 만들어보기 (0) | 2023.02.23 |