728x90

 

 

 

 

if문 회복시에 로그인 성공의 인자를 넣어줘도 실패가 뜬다

뭔가 문제일까

728x90
반응형
728x90

 

 

728x90
반응형
728x90

플래그(flag) 변수

 

로직 흐름을 제어할 사용하는 변수. 제어 플래그(control flag)라기도 하며,

boolean 데이터타입으로 토글 기능에 사용하기도

 

1)false true 뒤집기

2)flag 이용하여 종료 제어하기

 

 

 

프로그래밍에서는 상태를 기록하고 처리 흐름을 제어하기 위한 boolean타입 변수를 의미

참과 거짓을 나타내주는 플래그

 


 

boolean 타입의 변수 명은 가독성을 위해서 주로 아래와 같다.

  • isAnswer
  • isSuccess
  • isTrue
  • flag

그 외에도  관용적으로 사용하는 "flag" 라는 변수명을 사용하기도

 

※ 참/거짓을 구분하는 방법은 여러가지가 있을 것입니다. 1과 0으로 표기를 해도 되고, T와 F의 문자로 구분을 할 수 도 있겠지요. 그런데 왜 boolean 타입의 변수를 사용할까요?

boolean의 크기는 대략 1byte로 가장 작고, 가독성과 편의성을 위하여 사용하는 경우가 많습니다.

 

출처: <https://wikidocs.net/119689>

728x90
반응형
728x90

JAVA 제어문 - 8.1. 종합응용 1

 

String[] users = {"egoing","jinhuck","youbin"};

[] 배열로 유저id 목록 전체를 관리하고

 

String inputId = args[0];

로그인시, 유저에게 아이디를 입력 받음

 

boolean isLogined = false;

로그인 여부 체크

플래그(flag) 변수 사용

 

for(int i=0; i<users.length; i++) {

for 반복 & 카운트 변수 초기화

users변수의 배열 길이만큼 for 반복

카운트변수i +1씩해서 카운트

 

String currentId = users[i];

새로 변수설정 currentId

users[i] 반복문 카운트i 올라가면서 users 배열에 있는 인덱스번호가 같이 올라가면서 반복문이 반복될 때마다 배열 안에 있는 str데이터값이 바뀌게 되고 하나씩 체크할 있게됨

 

 if (currentId.equals(inputId)) {

String[] users = {"egoing","jinhuck","youbin"}; 여기 유저 전체목록에서 유저가 로그인하기 위해서 입력한 아이디와  첫번째 유저아이디부터 차례대로 대조하여 맞는게 있는지 확인하는 과정

 

isLogined = true;
break;

로그인이 확인되었다는 의미의 플래그(flag) 변수. 로그인 되었으니 유저id찾는 반복문 종료

 

		System.out.println("Hi,");
		if(isLogined) {
			System.out.println("Master!!");
		} else {
			System.out.println("Who are you?");
			}

isLogined true이므로 if문이 작동하여 유저 환영 문구인 master!! 출력

 

public class flow_control08_1 {
	public static void main(String[] args) {

		String[] users = {"egoing","jinhuck","youbin"};
		String inputId = args[0];              # users목록 중에 inputId가 들어온게 있는 체크해야함
		
		boolean isLogined = false;             # 로그인 여부 확인. 로그인 아직안됬기에  false
		for(int i=0; i<users.length; i++) {    # 전체 유저수보다 작게 반복문실행해서 유저목록중에 로그인할려는 유저 찾기
			String currentId = users[i];       # currentId : 현재유저
			if (currentId.equals(inputId)) {   # currentId와 inputId가 같으면 true되서 if문 발동
				isLogined = true;              # 위의 불리안과 연결되어 로그인됬으니(true) 종료시킴. 이런걸 플래그(flag)변수라고함
				break;                         # 일치하는 사람이 있으면 반복문 종료
			}
		}
        
		System.out.println("Hi,");
		if(isLogined) {
			System.out.println("Master!!");
		} else {
			System.out.println("Who are you?");
			}
	}
}

 

 

 플래그(flag) 변수 

프로그래밍에서는 상태를 기록하고 처리 흐름을 제어하기 위한 boolean타입 변수를 의미

참과 거짓을 나타내주는 플래그

 

 

 



 

 

 

JAVA 제어문 - 8.1. 종합응용 2

1에서 명단만 있던 것에서 비밀번호 기능 추가해보는 수업

 

※ 2차원 배열(array)

배열 안에 배열

ex)

String[][] users = {
	{"egoing","1111"}
}

 

 

 1편에서 추가된 코드 디테일 해석

String inputPass = args[1]; // pw 인자

String inputId = args[0]; 에서 id를 유저로부터 입력 받는 코드였고, 위는 pw

 

if (
		current[0].equals(inputId) && # and 논리연산자 : 둘 다 만족
		current[1].equals(inputPass)  # ID랑 PW 둘다 같다면 로그인시키는 코드
			)

for문 안에서 if문으로 id와 pw 같은지 체크. and 논리연산자(&&)를 사용하여 id와 pw 둘 다 맞는지 확인한다

 

 

 

 

728x90
반응형
728x90

 

JAVA 제어문(Flow Control) - 1. 수업소개

 

시간의 흐름에 따라서

사용자의 동작에 따라서

조건에 따라서 실행되는 순서를 제어한다 : 조건문(Conditional Statements)

 

처리할 데이터 1억개

이런 데이터를 '반복적'으로 처리할 사용

 

간의 순서 따라서 실행되는 프로그램 물이 흐르도록하는 '중력'이라고 한다면,

조건문 반복문 물의 흐름 바꾸는 , 수문 같은

 

이를 통해서 마음대로 로직의 흐름을 조작할 있다

(조건문과 반복문) 조작하기 위해서 먼저 알아야 것은

boolean data type, 비교연산자(comparison operator)

 

< 기능들의 비유>

불리언 데이터타입을 만드는 유일한 연산자 비교연산자(comparison operator) 거쳐서

교차로 같은 조건문(conditional statement) 찍고

순환도로라고 있는 반복문(looping statement)까지 이어지는 여행을 시작할

 

 


 

 

JAVA 제어문 - 2. 불리안(Boolean) Data type

boolean data type 두가지 : true, false

 

"" 감싸지지 않은 true, false boolean이라는 약속이 되어있기 때문에, 변수명으로 사용불가

reserved word : 컴퓨터언어에서 이미 쓰임이 있는 단어들 또는 앞으로 채택될 가능성이 있는 키워드들은 컴퓨터언어가 사용하기로 예약되어 있다고 해서 리저브드 워드라 부름

 

 

이클립스에서 코딩하다가 JAVA API 연결해서 보는

foo까지 쓰고 .찍으면 있는 명령어 목록들이 우측하단에 박스처럼 뜬다

쓸려는 명령어를 클릭하고 오른쪽에 노란바탕에 사용법과 설명들이 뜨는데,

노란 바탕에 우클릭 한번 하면 스샷 아래 동그라미 메뉴가 새로 생기고 자바API 가서 있게끔 링크를 연결해준다

 

 

String foo = "Hello world";
System.out.println(foo.contains("world"));

변수명.contains() : 지정 변수에 해당 글자가 들어가있는지 여부에 따라 true or false 반환

   - 위의 코드에서는 foo라는 변수에 world 문자열(str)있는지 체크하고 있기에 true 반환

String foo = "Hello world";
System.out.println(foo.contains("egoing")); // 반환값 false

 

 

728x90
반응형
728x90

 

6.리터럴의 타입과 접두사,접미사

접두사,접미사는 대소문자 구분x

파란줄의 접미사 정수형 long 실수형 float 신경쓰면 된다

 

 

정수형에서 byte,short int 같이 묶여져 따로 접미사를 쓰지 않고 long 접미사L 붙여주면 되고,

실수형에서 보통 double d 생략되고 float f 접미사 쓰는게 관례

 

 

 

boolean 타입 : true 또는 false 저장가능

        boolean power = true;

char 타입 : 하나의 문자만 저장가능

        char ch = 'A';         // 하나의 문자는 홑따옴표 ' '

String 타입 : 여러 문자 저장가능

        String str = "ABC";  // 여러 문자는 큰따옴표 " "

 

 

'\n' : 바꿈 문자. 하나의 문자. ' ' 되어있는걸 봐도 있음

 

byte 타입 : 접미사가 없기에 int타입을 사용. , 접미사 x

        대신 byte타입 범위 안에 저장할 있는 값이여야함

        범위 : -128~127 ( 범위 벗어나면 에러)

        byte b = 127;   // literal 127(127 자체) 타입은 int

 

int 타입 : 앞에 접두사를 붙여서 진수를 나타낼 있음

        0b 접두사로 붙으면 2진수 0b0101        

        한계값이 20억까지만 사용가능. 이후의 값은  long처리해야함

        int i = 100;        // 10진수

        int oct = 0100;   // 8진수

        int hex = 0x100; // 16진수

 

long 타입 : int 한계값이 넘어서는 20 이후부터 써야하는 정수타입

        long타입 접미사L 안붙여도 괜찮지만, int 한계값을 넘는 20억부터는 접미사L 필수

        long 1 = 10_000_000_000L;   // 0 10개라 100

        long 1 = 1 100;  // ok

 

float 타입 : 실수. 접미사 필수

        float f = 3.14f;

 

double 타입 : 실수. 접미사 d 생략가능

        double d = 3.14d;   // ok

        double d = 3.14;     // ok

 

          10.  10.0 : 10.0에서 소수점 뒷자리0 생략된 의미. 접미사 없으니 double타입

          .10  0.10 : 0.10에서 0 생략된 의미. 접미사 없으니 double타입

          10f  10.0f : 10f 10.0f 같은 의미

          le3  1000.0 : 실수형. 접미사 없으니 double 타입

                        기호 e 10 n제곱을 의미. 값이 1000이지만 기호e 실수형에서 쓰임

 

 

 

 

 

7.변수와 리터럴의 타입 불일치

1)범위가 '변수 > 리터럴' 경우, ok

           (그릇)    (물건)

 

      int i = 'A';           // int > char

      long 1 = 1 123;   // long > int

      double d = 3.14f; // double > float

 

2)범위가 '변수 < 리터럴' 경우, 에러

      int i = 30_0000_0000;    // int 범위(20) 벗어남. error

      long 1 = 1 3.14f ;         // long < float : 실수형이 정수보다 넓다. error

                 (롱타입 8byte, 플로트타입 4byte)

      float f = 3.14;              // float < double 더블이 플로트보다 크다. error

 

3)byte, short 변수에 int리터럴 저장가능

      byte b = 100;     // ok (, byte 범위-127~127 사이에 속해야함

      byte b = 128;    // error

 

 

 

해보기

 

 

 

728x90
반응형
728x90

문제

 

 

<풀이과정>

int, str, bool type을 기억하고

True = 1

False = 0

숫자로는 이렇게 통용된다

 

728x90
반응형

+ Recent posts