728x90

 

boolean타입 지정 안하고 str로 해도 되는지 실험 : 안됨 boolean으로 변경

728x90
반응형
728x90

 

 

728x90
반응형
728x90

 

 

 

728x90
반응형
728x90

 

 

728x90
반응형
728x90

 

 

빈공간 sc입력후 ctrl+space치면 자동 스캐너 자동 임포트 및 스니펫 작동

 

sc.next() : 공백 전까지 입력을 받음

sc.nextLine() : 한 줄 전체를 입력 받음

sc.next + 데이터타입() : 해당 데이터타입만 입력받음

ex) .nextInt()  .nextDouble()  .nextfloat()

 

 

 

 

 

728x90
반응형
728x90

for문 써보기

변수 초기화, 배열길이에 따른 반복횟수 지정, i변수 카운트

 

간단한 배열(어레이) 사용

 

 

음... 강의 듣고 한번 쭉 완강을 생각하기 보다

어차피 듣고 간단한 이해만 하고 넘어가면 까먹으니 그냥 하나씩 확실히 해보고 익히고 넘어가는게 나을 수도?

수업까지 약3주 남았으니 최대한 해보자

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 제어문 - 7.3. 반복문(Loop) + 배열(Array)

 

 

html

<li>user name</li> 몇만개 반복해야된다면?

<li>egoing</li>

<li>jinhuck</li>

<li>youbin</li> ...

 

반복문과 배열이 중요

 

String[] users = new String[3];
users[0] = "egoing";
users[1] = "jinhuck";
users[2] = "youbin";


for (int i = 0; i < 3; i++) {        # 배열 길이랑 맞지 않는 반복횟수의 경우의 수에서는 제대로 작동x
	System.out.println("<li>"+users[i]+"</li>");   # html <li>태그 반복문
}

 - i<3 조건이므로, 3까지는 괜찮으나 3보다 작은 수면 에러나고, 크면 커도 3개까지만 출력되므로 코드가 제대로 작동하지 않는다

 

String[] users = new String[3];
users[0] = "egoing";
users[1] = "jinhuck";
users[2] = "youbin";

for (int i = 0; i<users.length; i++) {     # .length추가로 new String[]배열 길이에 따라 반복가능
	System.out.println(users[i]+",");   # user[인덱스]에 나눠어서 , 찍어주고
}

 - 범위를 i < users.length(배열의 길이의 따른 숫자) 맞아 떨어지게 몇명의 유저수가 와도 자동으로 수에 맞춰서 반복문 횟수를 조절해주게 된다.

 - i++ i = i+1와 같은 코드

 

 

for (int i = 0; i<users.length; i++) 기억!

 

728x90
반응형
728x90

 

 

JAVA 제어문 - 7.1. 반복문(Looping statement)

 

반복문의 두가지

while(), for()

 

반복문 while

while () 안에 boolean 데이터 타입 true 들어가면,

while {} 코드가 true 보고 반복적으로 계속 실행됨

 

while, 자유도가 높다

while문의 i코드가 일억줄의 코드 중에 어떤 코드로 인해 i값이 변형될 가능성

길어지면 알아보기 힘들기에 누군가 i값을 다른 용도로 쓰거나 했다면 코드가 망가짐.

 

for문의 경우 필요요소가 () 하나로 패키징 되어 있기에 문제가 생길 가능이 적고, 코드 의도 파악이 쉽다

반복 횟수가 고정되어있다면 for문을

 

for 형식 기억

for(int j=0; j<3; j++) {

 

1.while문

# while문
System.out.println(1);

int i = 0; # 숫자 세는 코드
           # i는 일반적으로 반복문에서 카운팅하기 위해 많이 지정함
# while(true) { # boolean 데이터타입으로 무한루트도 가능
while( i < 3 ) {
	System.out.println(2);
	System.out.println(3);
	i = i + 1; # 같은 코드 i++;
}

System.out.println(4);

 

 

2.for문

# for문
# 반복 횟수가 지정되있을 경우 for문을 쓰는게 좋다
# for문은 ()안에 boolean타입이 아닌 초기값을 세팅하는 코드가 들어감

for(int j=0; j<3; j++) {
	System.out.println(2);
	System.out.println(3);
}

System.out.println(4);

 

 



 

 

JAVA 제어문 - 7.2. 배열(Array)

 

 

엄청나게 많은 데이터를 반복해서 보통 쓰게되는데

엄청난 양의 데이터를 정리하기 위한 체계가 필요하게 된다. 이때 쓰는게 배열(Array)이고, 자바에서는 array 기본체계

반복문과 배열(array) 같이 많이 쓰인다

 

1.빈 배열을 만들고 값을 추가해서 넣는 방법

# 문자열로 이루어진 배열
# 빈 배열을 만들고 값을 추가해서 넣은 방법

String[] users = new String[3];  # [3]은 배열의 크기를 지정하는 것
users[0] = "egoing";    # 갯수를 셀 때는 1부터3까지 세개이나 자릿수를 셀 때는 프로그래밍에서는 0부터	
						# 0의 첫번째 자리는 egoing이라는 의미
users[1] = "jinhuck";
users[2] = "youbin";

System.out.println(users[1]);
System.out.println(users.length);// 세칸짜리 배열이라는 뜻

결과값 

jinhuck
3

 

2.배열 생성 시에 값을 담아서 생성시키는 방법

# 배열 생성시에 아예 값을 담아서 생성시키는 방법

# int[] scores = new int[3]
int[] scores = {10, 100, 1000};

System.out.println(scores[1]);
System.out.println(scores.length);

결과값

100
3

 

 

 

인덱스(Index)와 원소(Element)

index : 0 1 2

element(원소) : "egoing" "jinhuck" "youbin"

 

 

 

 

728x90
반응형
728x90

JAVA 제어문 - 6. 논리 연산자(logical operator)

 

 

비교연산자

1 == 1 같은가?

좌항과 우항을 비교하여 true 또는 false 반환하는 연산자

 

논리연산자 마찬가지이나 특징이 있다

좌항과 우항에 모두 boolean 와야한다

 

 

1.AND 연산자 : &&

양 쪽 다 포함해야 true

// AND 연산자 : 그리고, 둘 다
System.out.println(1 == 1);
System.out.println(true &&  true); // true
System.out.println(true &&  false); // false
System.out.println(false &&  false); // false
System.out.println();

 

2. OR 연산자 : ||

둘 중 하나만 true여도 true를 결과값으로 돌려준다

// OR 연산자 : 또는, 둘 중 하나
// true와 false가 섞여있으면 true 따라감
System.out.println(true || true); // true
System.out.println(true || false); // true
System.out.println(false || true); // true
System.out.println(false || false); // false
System.out.println();

 

3. not 연산자 : !

논리값인 불리안(boolean) 값을 반대로 바꾸는 역할을 한다

true는 반대인 false로 false는 true로

// not
System.out.println(!true); // false
System.out.println(!false);// true

 

 

 


 

 

*변수 처리로 코드 줄이기!

한줄이 너무 복잡한 로직과 코드면 관리가 어려우니 변수로 심플로하게

ex)

if (inputId.equals(id) &&  (inputPass.equals(pass) || inputPass.equals(pass2)   ) {

↓↓↓

boolean isRightPass = (inputPass.equals(pass) || inputPass.equals(pass2)
if (inputId.equals(id) && isRightPass ) {

 

 

728x90
반응형

+ Recent posts