JAVA 제어문

종합응용과 수업을 마치며

수업소개

여러까지 오시느라 고생 많으셨습니다. 지금까지 배운 것을 총정리하는 시간을 가져보겠습니다. 

 

 

강의1

소스코드

public class AuthApp3 {

    public static void main(String[] args) {
		
		String[] users = {"egoing", "jinhuck", "youbin"};
		String inputId = args[0];
		
		boolean isLogined = false;
		for(int i=0; i<users.length; i++) {
			String currentId = users[i];
			if(currentId.equals(inputId)) {
				isLogined = true;
				break;
			}
		}
		System.out.println("Hi,");
		if(isLogined) {
			System.out.println("Master!!");
		} else {
			System.out.println("Who are you?");
		}

	}

}

 

 

 

강의2

소스코드

변경사항

public class AuthApp3 {

    public static void main(String[] args) {
		
		//String[] users = {"egoing", "jinhuck", "youbin"};
		String[][] users = {
				{"egoing", "1111"},
				{"jinhuck", "2222"},
				{"youbin", "3333"}
		};
		String inputId = args[0];
		String inputPass = args[1];
		
		boolean isLogined = false;
		for(int i=0; i<users.length; i++) {
			String[] current = users[i];
			if(
					current[0].equals(inputId) && 
					current[1].equals(inputPass)
			) {
				isLogined = true;
				break;
			}
		}
		System.out.println("Hi,");
		if(isLogined) {
			System.out.println("Master!!");
		} else {
			System.out.println("Who are you?");
		}

	}

}

 

 

 

지식지도

관련된 지식의 지도입니다. 지도를 참고해서 스스로 학습 경로를 탐험해보세요.

 

 

 

 

수업소식

아래 채널에 구독하시면 새로운 온/오프라인 수업이 있을 때 알려드립니다. 

 
 
 

댓글

댓글 본문
  1. 240527
  2. 코딩앤수학
    2024-05-08
  3. 당당
    2023.04.13
  4. bxtr
    너무 재밌네요 감사합니다
  5. 코딩드림
    221107
  6. 보통사람 박코딩
    할수있다
  7. 후토마끼
    22.10.10
  8. 코리니
    912
  9. economin
    수강완료
  10. 배열을 원소로 하는 배열
    ex) String[][] users = { {"A","B"} , {"C",'D"}, ~~~~~};
    대괄호 두번
  11. 코딩이취미다
    축하 드립니다.
    응원 합니다.
    감사합니다.
  12. 육도
    2022.05.13 완료
  13. 포포
    감사합니다 !
    대화보기
    • 열정jk
      220220 감사합니다
    • 나연
      2022년 2월 8일 (화) 완료

      flag 변수: `isSignedIn`
      ```java
      boolean isSignedIn = false;
      for (int i = 0; i < users.length; i++) {
      String currentId = users[i];
      if (currentId.equals(inputId)) {
      isSignedIn = true;
      break;
      }
      }
      ```

      ```java
      // Two-dimensional array
      String[][] users = { { "nayeon", "1111" }, { "nayeony", "2222" }, { "nayoni", "3333" } };
      ```

      =====
      질문:

      여기 if 문의 조건에서
      ```java
      currentUser[0].equals(inputId) && currentUser[1].equals(inputPassword)
      ```
      `currentUser[0]`, `currentUser[1]`와 같이 인덱스를 하드코딩하는 것을 개인적으로 좋아하지는 않는데요

      아래 파이썬 코드와 같이:
      ```python
      users = [
      ["egoing", "1111"],
      ["jinhyuk", "2222"],
      ["youbin", "3333"]
      ]

      username, password = users[0]
      ```
      자바에서 unpacking 대신 쓸 수 있는 좋은 방법이 있을까요? (구글링 해보니까 비슷한 방식의 unpacking은 자바에서 존재하지 않는다, 라이브러리를 써라, 이런 말 밖에 없더라고요.)
    • 김나루
      2022 01 23 완료
    • 김민준
      이렇게도 할 수 있네요 :)
      String inputId = args[0];
      String inputPass = args[1];
      boolean isRight = false;
      for(int i=0; i<users.length; i++) {
      String currentId = users[i][0];
      String currentPass = users[i][1];

      if(currentId.equals(inputId)&&currentPass.equals(inputPass)){
      isRight = true;
      break;}
      }System.out.println("Hi");
      if(isRight) {
      System.out.println("안녕하세요 "+ inputId + "님! 반가워요!!");
      } else {
      System.out.println("누구세요?");
      }
    • 초보자바
      22-01-12 완료
    • chalieya
      2021. 11. 28. 완룟! 강의 감사합니다.
    • 주간식당메뉴
      21.10.31.
    • 성치
      2021-10-23일 완료
    • won4175
      2021.10.18
    • 2021.08.29 완료
    • labis98
      20210810 완료 !!!
    • 이마누
      완료
    • super1Nova
      210806
    • 대추
      주석 다신거 보고 헷갈렸던 부분이 조금 정리가 되네요. 공유해주셔서 감사합니다!!
      대화보기
      • Jaemin Lim
        2021.07.24
      • B=loom
        2021.07.17
      • 걸어가는신사
        2021-07-05
      • 초딩 개발자
        2021/06/20
      • 도공우승9
        완료!
      • 도전까마귀
        아 그런 의미였구나.. 감사합니다.
        대화보기
        • 도전까마귀
          2021.05.26 수강 완료! 코드 복기로 수련 들어가자
        • jeisyoon
          2021.05.01 Conditional Statement - 완강
          감사합니다.
        • anya422
          done!
        • Sunho Kim
          완료(2021.04.11.일) 감사합니다!!
        • 레이
          21.04.10
        • chimhyangmoo
          21.04.08
        • 김우중
          감사합니다
        • 임태근
          안녕하세요 핵초보 입문자로서 이번강의가 잘 이해가 안되어 주석을 달며 복습 및 스스로에게 설명할수있게 해보았습니다.

          public class AuthApp {

          public static void main(String[] args) {

          //String[] users = {"egoing", "jinhuck", "youbin"};
          String[] [] users = { //[ [] [] ] 큰 박스에 2개의 박스 만듦(배열)
          {"egoing", "1111"}, //current[0], current[1]
          {"jinhuck", "2222"}, //current[0], current[1]
          {"youbin", "3333"} //current[0], current[1]
          };
          String inputId = args[0]; // 아규먼트의 index 0번값을 받아온다 ex) 입력한 값이 egoing 1111이라면 -> [egoing] [1111] 에서 egoing 부분
          String inputPass = args[1]; // 아규먼트의 index 1번값을 받아온다 ex) [egoing] [1111]에서 1111값

          boolean isLogined = false; //로그인이 되지 않았다.

          for(int i=0; i<users.length; i++) { //user 배열에서 current값을 비교하기 위한 for문, 즉 반복문입니다.
          String[] current = users[i]; //
          if(
          current[0].equals(inputId) && //current[0]의 값이 아규먼트에 쓴 값(inputId)와 같으냐~
          current[1].equals(inputPass) // current[1]의 값이 아규먼트에 쓴 값(inputId)와 같으냐~
          ) {
          isLogined= true; // 위를 통과했으면 true, 그밑의 break로 for문 나옴
          break;
          }
          } //여기까지 ID,password 들어온 값이 맞는지 체크 완료 즉, 로그인 과정.

          System.out.println("Hi,");
          if(isLogined) { //로그인 값이 true라면~ 하단 출력문 출력
          System.out.println("Master!!");
          } else { //로그인 값이 false라면 ~ 하단 출력문 출력
          System.out.println("Who are you?");
          }
          }

          }
        • 김궐궐
          완료!
        • boat
          감사합니다!
        • baeroro
          20210211
        • max2021
          System.out.println("Hyuk : 어, 왔니?");
          대화보기
          • 아츄
            201230
          • 전현지
            코딩 돌려보시면 (맞는 argument로 돌려보시면) 다음과 같은 결과가 나옵니다.

            1차원이상의 배열출력은 Arrays.deepToString(): <-이중배열은 그냥출력이안되서 이 메소드로 출력합니다
            users: [[actualplce, 1111], [JH, 1112], [YB, 1113]] <-회원정보를 이중배열 users로 나타냄.
            users[0]: [actualplce, 1111] <-users의 0번째 인덱스는 이거고(길이는 2)
            users[1]: [JH, 1112] <-1번째 인덱스..
            users.length:3 <-users배열 자체의 길이는 3이고
            users[0].length:2 <-users의 [0]번째배열의 길이는 2 입니다.

            inputID:actualplce <-이것들은 제가 넣은 arguments
            inputPW:1111

            i: 0 <- for문에서 반복순서인 i가 0일때,
            current(users)-length:3 <- users(current와 동일)배열의 길이는 3이고
            currentShort(users[i])-length:2 <-users의 [i]번째(currentShort) 배열의 길이는 2입니다.


            current배열(users)은?:[[actualplce, 1111], [JH, 1112], [YB, 1113]]
            current[0]:[Ljava.lang.String;@28a418fc
            <- 아마 current(users)의 0번째인덱스의 배열이아닌, 저장소 위치?를 나타내는 듯 합니다.
            current[0]-deepToString:[actualplce, 1111] <-배열출력은 이렇습니다.(length가 2개나오죠.)

            currentShort배열(users[i])은?: [actualplce, 1111] <-i는 0일때, users[0]의 배열결과가 이렇습니다.
            currentShort[0]-users[i][0]:actualplce <-그렇다면, users[0]배열의 [0]번째 요소는 이거겠죠.(length:1)
            currentShort[1]-users[i][1]:1111 <-users[0]배열의 [1]번째 요소는 이것일 것이고요.(length:1)
            =>즉, inputID, inputPW를 각각 매칭시키려면, currnetShort[0], currentShort[1]과 매칭이되어야합니다.


            (부합)isLogined:true <-for문다음에 if조건문에서 inputID, PW가 args와 일치해서 true: 로그인에 성공합니다.

            HI
            isLogined:true
            어 왔니?
          • 전현지
            왕초보입니다 이중배열[][]관련해서 잘 모르는 부분이있어서 혹시 저처럼 헤매시는 분 계실까봐 중간중간 출력문을 넣어 과정을 보기편하게 했습니다. 저는 current[0], current[1]이 들어가야하는 이유가 이해가안갔었는데, 이렇게하니 이해가 쉽더라구요. 혹시 이 부분 이해안가신 분은 제 코딩을 복붙해서 돌려보시고 이해해보시길바래요!

            String[][] users = {
            {"actualplce", "1111"},
            {"JH", "1112"},
            {"YB", "1113"}

            };

            System.out.println("1차원이상의 배열출력은 Arrays.deepToString(): ");
            System.out.println("users: "+Arrays.deepToString(users)); //1차원이상의 배열출력은 Arrays.deepToString()이용!
            System.out.println("users[0]: "+Arrays.deepToString(users[0]));
            System.out.println("users[1]: "+Arrays.deepToString(users[1]));
            System.out.println("users.length:"+users.length); //users.length: 3
            System.out.println("users[0].length:"+users[0].length); //users[0].length: 2
            System.out.println("");

            String inputID = args[0];
            String inputPW = args[1];
            System.out.println("inputID:"+inputID);
            System.out.println("inputPW:"+inputPW);
            System.out.println("");


            boolean isLogined = false; //초기상태:로그인안됨(false). (플래그변수)
            for(int i=0; i<users.length; i++) { //0번인덱스부터 users배열수까지 반복

            String[][] current = users;
            String[] currentShort = users[i];

            System.out.println("i: "+i);
            System.out.println("current(users)-length:3");
            System.out.println("currentShort(users[i])-length:2");
            System.out.println("");
            System.out.println("current배열(users)은?:"+Arrays.deepToString(current));
            System.out.println("current[0]:"+current[0]); //[Ljava.lang.String;@28a418fc
            System.out.println("current[0]-deepToString:"+Arrays.deepToString(current[0]));
            //[actualplce, 1111]
            System.out.println("");

            System.out.println("currentShort배열(users[i])은?: "+Arrays.deepToString(currentShort));
            //i가0: [JH, 1112], i가1:[JH, 1112], i가2: [YB, 1113]
            System.out.println("currentShort[0]-users[i][0]:"+currentShort[0]);
            System.out.println("currentShort[1]-users[i][1]:"+currentShort[1]);
            //System.out.println("currentShort[1]:"+currentShort[2]); //error currentShort의 index가 0,1밖에없어.
            System.out.println("");
            System.out.println("");

            //만약, args[0]에 넣은 값(inputID)이 users목록에 있으면,이렇게할거야.
            if(
            current[0].equals(inputID) &&
            current[1].equals(inputPW)
            ) {
            isLogined = true; //불리언 isLogined=true로 바꿈.
            System.out.println("(부합)isLogined:"+isLogined);
            break; //그리고 로그인이 참이라면, 빠져나와.
            }
            }

            System.out.println("");
            System.out.println("HI");
            System.out.println("isLogined:"+isLogined);
            if(isLogined) {
            //configuration에서 준 변수값이 users목록에 없는값이면
            //불리언 isLogined가 false로남아서 '너누구니?'나옴
            System.out.println("어 왔니?");
            }else {
            System.out.println("너누구니");
            }
          • 세컨
            gg
          • oyuiw
            20201213