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. economin
    수강완료
  2. 배열을 원소로 하는 배열
    ex) String[][] users = { {"A","B"} , {"C",'D"}, ~~~~~};
    대괄호 두번
  3. 코딩이취미다
    축하 드립니다.
    응원 합니다.
    감사합니다.
  4. 육도
    2022.05.13 완료
  5. 포포
    감사합니다 !
    대화보기
    • 열정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
          • 비밀번호가 틀렸을 경우도 작동되게끔 만들었고,
            아규먼트 넣는대신 자바 1수업에서 배웠던 JOptionPane.showInputDialog()
            를 사용해 input이 더 편리하게끔 만들어 봤습니다.

            import javax.swing.JOptionPane;

            public class AuthApp4 {

            public static void main(String[] args) {
            String[][] users = {
            {"Egoing", "1111"},
            {"Dom", "2222"},
            {"Sarah", "3333"},
            {"Hans", "4444"},
            {"Alex", "5555"}
            };

            String inputId = JOptionPane.showInputDialog("Enter your name");
            boolean rightId = false;
            boolean rightPass = false;
            for (int i=0; i < users.length; i++) {
            String[] current = users[i];
            if (current[0].equals(inputId)) {
            rightId = true;
            String inputPass = JOptionPane.showInputDialog("Enter you password");
            if (current[1].equals(inputPass)) {
            rightPass= true;
            break;
            }
            }
            }

            if (rightId) {
            if (rightPass) {
            System.out.println("Welcome, Master!");
            }else {
            System.out.println("Check your Password");
            }
            }else {
            System.out.println("Check your name");
            }

            }

            }
          • 안광민
            public class booleanqp {

            public static void main(String[] args) {

            String[][] users = {
            {"kmight", "1111"},
            {"miyu", "2222"},
            {"mihee", "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?");
            }

            }
            }


            완료
          • 뱅글이
            마지막 수업은 내일 아침 한번 더 보고 따라해봐야겠다. 아직 이해가 다 가지 않아서 혼자서는 작성이 어렵다.
          • 준서
            fin.
          • Itsyng
            2020.9.17 완료
          • Gyeong Min Lee
            ㅁㅇㄹ
          • 선대범
            너무 길지만 아이디는 맞고 패스워드가 다르면 Wrong Number가 나오게 해봣습니다.
            int isLogined = 0;
            for (int i = 0; i < users.length;i++) {
            String[] current = users[i];
            if (
            current[0].equals(inputID) &&
            current[1].equals(inputPass)
            ) {

            isLogined = 1;
            break;
            } else if (current[0].equals(inputID)){
            isLogined = 2;
            }
            // System.out.println(users[i]);
            }
            System.out.print("Hi, ");
            if (isLogined == 1) {
            System.out.println("Master");
            } else if(isLogined == 0){
            System.out.println("Who are you?");
            } else {
            System.out.println("Wrong Pass");
            }
            }
          • 넘무
            아이디와 비밀번호가 모두 같을땐 "로그인 되었습니다"
            아이디는 같은데 비밀번호가 다를때 "비밀번호가 틀렸습니다"
            아이디가 다를때 "로그인 실패"

            이렇게 띄울려고 한참 30분간 만지작 만지작하다가
            선생님께서 말씀해주신대로 구글링을 해서 코드를 작성하여
            내가 원하던 프로그램을 만들었습니다!!

            제가 배운걸 공유하자면
            if( !current[1].equals(inputPass) ) {
            ~~
            }
            이렇게 느낌표를 붙여주면 current[1]과 inputPass의 값이 다를때 true가 됩니다
          버전 관리
          egoing
          현재 버전
          선택 버전
          graphittie 자세히 보기