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. 2021.08.29 완료
  2. labis98
    20210810 완료 !!!
  3. 이마누
    완료
  4. super1Nova
    210806
  5. 대추
    주석 다신거 보고 헷갈렸던 부분이 조금 정리가 되네요. 공유해주셔서 감사합니다!!
    대화보기
    • 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?");
        }
        }

        }
      • 김궐궐
        완료!
      • 감사합니다!
      • 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
        • 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가 됩니다
        • 방동혁
          기본적으로 로그인이 되기 전 상태에서 로그인이 된 상태로 바뀌는 것을 생각하여 코드를 구성한 것입니다. for문 안에 isLogined변수를 처음 선언하게 되면 프로그램이 좀더 복잡해 질때 로그인 되지도 않은 사람을 로그 아웃 해야 하는 경우도 발생 할 수 있고, 변수를 추적할기 어려울 수도 있을 것 같아요. 이런 경우를 대비하여 순환문 바깥쪽에 기본값을 가진 변수를 미리 선언한 후 순환문과 조건문 안에서는 변수의 값 여기서는 로그인이 되었는지 아닌지 상태를 나태내는 값만 true, false를 바꿔가며 선언한 것입니다. 현재와 같은 문장에서 for문 안에 변수를 선언하면 for문을 벗어날 때 변수가 사라지기 때문에 if문 안에서 사용하는 변수는 선언된 적이 없는 변수가 됩니다. 하여 오류가 발생합니다. for문과 if문 모두에 사용하는 변수는 for문과 if문 밖 모두의 상위에 선언되어야 두곳 모두에서 사용할 수 있게 됩니다.
          대화보기
          • 코링
            boolean isLogined = false; 를 하는 이유는
            isLogined = false 즉, '로그인이 아직 되지 않았다.' 라는걸 의미하는거고,
            아이디와 비밀번호가 맞다면,
            isLogined = true 즉, '로그인이 되었다.'는걸 의미하는 거에요 !
            대화보기
            • yechubot
              왜 boolean isLogined = true; 가 아니구
              boolean isLogined = false; 로 선언을 해야하나요?

              + boolean isLogined = false; 로 선언을 하는 부분이 로그인 되기 전 상태이기 때문에 false로 선언을 하는 건가요?!
            • 안녕하세요!
              HTML기본강의를 마치고 자바프로그래밍언어를 새롭게 공부하고 있습니다. 저는 항상 다른분들 댓글 정리되어 있는걸로 되게 많이 정리하고 어렴풋이 눈치껏 알았던 것도 정확하게 짚고 넘어갈 수 있었습니다. 그 덕분에 AuthApp을 만드는데 좀 더 욕심을 가져서 input dialog를 넣거나 더 나아가 패스워드를 암호화시키는 것까지 구글링을 통해서 배울 수 있었습니다.

              그리고 오늘 제가 이 강의를 들으면서 한번에 이해가 가지않아서 강의를 여러번 듣고 구글링도 하면서 또 궁금증이 해결되고 새로운걸 배우게되었습니다. 그래서 이번에는 제 스스로 정리한 것을 같이 공유하고자 합니다. (아직도 솔직히 boolean isLogined = false; 플래그 변수를 왜 두는지는 정확히 이해하지못했습니다ㅎ)

              제가 이해가지 않았던 부분은 String[] current= user[i]; 이었습니다. String[] current= user[i]; 에서 user[i]는 종합응용1의 예시(String currentid=user[i]처럼 값을 나타내는 게 아니라 하나의 배열을 의미하기 때문에 String 뒤에 배열 []를 해줘야합니다. 예를들어, user[0]일 때, {"egoing","1111"}를 나타내어서 current[0]은 "egoing"을 의미하고, current[1]은 "1111"을 나타냅니다. 또 한번더 예를 들자면 user[1]일 때, {"jinhuck","2222")를 나타내어서 current[0]은 "jinhuck"을 의미하고, current[2]는 "2222"를 나타냅니다.

              혹시나 틀린부분이나 boolean isLogined = false; 이부분에 대해서 아시는분은 댓글부탁드릴게요!
              그리고 항상 양질의 강의 감사합니다!
            • natethru
              2020.03.24

              강의를 끝까지 듣고, 자바1 수업에서 들었던 import javax.swing.JOptionPane 의 다이얼로그들을 활용해 아이디와 비밀번호를 직접 입력하고, 둘다 맞게 입력했을 경우 로그인 성공 메시지를, 실패했을 경우 실패 메시지를 표시하는 프로그램을 만들어 보았습니다.

              난생 처음 도전해보는 코딩이지만 항상 좋은 설명과 격려로 힘내면서 공부하고 있습니다. 감사합니다.
            • yyrr
              완료
            • 뉸찡
              2020.03.06
              완료! 감사합니다 ㅠㅠ
              마지막 부분은 어려워서 복습하겠습니당
            • 감자
              2020.03.03 수강완료
            • 소금설탕
              고맙습니다.
            • 임지수
              2020.01.31 완료
            • 라또마니
              감사합니다.
            • 코린이
              수강 완료했습니다. 감사합니다-!!
            • 이기호
              Java가 어렵게 느껴졌는데 여기서 강의 듣고 다시 열정이 생겼습니다. 감사합니다!
            • 쑤우
              수강완료. 감사합니다~
            버전 관리
            egoing
            현재 버전
            선택 버전
            graphittie 자세히 보기