just do it

반복문(for문, while문 비교), 2차원배열(java) 본문

언어&프레임워크/Java

반복문(for문, while문 비교), 2차원배열(java)

밍풀 2022. 8. 19. 21:54

for문과 while문의 형식 비교

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package programmingg;
 
public class looping {
 
    public static void main(String[] args) {
    
        System.out.println(1);
        //2,3을 세번 반복출력하는 코드
        int i=0;
        while(i<3) {
            System.out.println(2);
            System.out.println(3);
            i++;//i=i+1, 이코드가 없다면 영원히 시행되어 밑에가 unreachable code가 됨
        }
        
        System.out.println(4);
        
        
        //위와 같은 것을 for문으로 만들기, for문은 반복할때 필요한 것들이 패키지로 묶여있어 편리
        for(int j=0;j<3;j++) {
            System.out.println(2);
            System.out.println(3);
        }
        
 
    }
 
}
 
cs

for(첫값 선언; 불리언 ; 반복마다 실행되어야 하는 코드)

for문은 필요한 게 패키지로 묶여있으니 코드의 의도 파악하기 쉬움, 반복할때 용이

while 문은 for문보다 원시적, 반복에 필수적 요소들이 떨어져 있어 반복문 작성시 헷갈리고 코드가 망가질 가능성이 있다.

 

반복문과 뗄 수 없는 관계, 배열의 기본 복습

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package programmingg;
 
public class array {
 
    public static void main(String[] args) {
        String s[]=new String[3];
        s[0]="look";
        s[1]="at";
        s[2]="me";
        System.out.println(s[0]);//look 출력
        System.out.println(s.length);//배열에 몇개의 값이 담겨있는지? 3출력
        
        //배열 생성할때 아예 값을 담아 생성할수도 있음
        String m[]= {"look""at""me"};
        System.out.println(s[0]);//look 출력
        
        
        
    }
 
}
 
cs

 

반복문과 배열을 함께 사용한 예

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package programmingg;
 
public class looparray {
 
    public static void main(String[] args) {
        String users[]= new String[3];
        users[0]="daisy";
        users[1]="mike";
        users[2]="kate";
        
        //각 사람이름 앞뒤로 html li 태그를 만들고 싶을때
        for(int i=0;i<3;i++) {
            System.out.println("<li>"+users[i]+"</li>");
        }
        
 
    }
 
}
 
cs

 

for문 사용해 존재하는 아이디 인지 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package programmingg;
 
public class loginapp {
//inputid로 들어온애가 유저목록에 있는 아이디 인지 확인, for문 사용!! 
    public static void main(String[] args) {
        String user[]= {"min","kate","jin"};
        
        String inputid = args[0];
        boolean islogined = false;//불리언 초기값 거짓으로, 플래그변수라고도함
        
        for(int i=0;i<user.length;i++) {
            String currentid = user[i];
            if(currentid.equals(inputid)) {//들어온아이디값이 유저배열에있는값 첫번째,두번째,세번째 값이랑 같은거있나
                islogined = true;//같은거 있으면 여기까지 내려고오 불리연 참으로 바꿔줘
                break;//브레이크 있으면 브레이크가 포함된 반복문 끝내버림
            }
            
        }
        System.out.println("hi");
        if(islogined) {//불리언 변수 islogined이 참이니
            System.out.println("master!!");
        }else //참 아니니
            System.out.println("who are you??");
    
    }
 
}
 

 

비밀번호까지 맞나 확인(2차원 배열 활용)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package programmingg;
 
public class loginapp2 {
 
    public static void main(String[] args) {
        String[][] users = { //배열안에 또다른 배열, 아이디와 비번을 가지고 있는 배열을, 가지고 있는 배열 생성,각각의 원소(string)가 배열인 배열
                {"min","1111"},
                {"kate","2222"},
                {"jin","3333"}
        };
        
        String inputid = args[0];
        String inputpass = args[1];
        
        boolean islogined = false;//불리언 초기값 거짓으로, 플래그변수라고도함
        
        for(int i=0;i<users.length;i++) {
            String[] current = users[i];//i번째 사용자 정보를 current에 저장, current는 아이디, 비번 둘다 있는 배열이므로 배열형문자열로선언
            if(
                    current[0].equals(inputid)&& //currnet배열의 첫번째 원소(여기선아이디)가 inputid랑 같냐
                    current[1].equals(inputpass))//currnet배열의 두번째 원소가 inputpass랑 같냐
            {
                islogined = true;//같은거 있으면 여기까지 내려고오 불리연 참으로 바꿔줘
                break;//브레이크 있으면 브레이크가 포함된 반복문 끝내버림
            }
            
        }
        System.out.println("hi");
        if(islogined) {//불리언 변수 islogined이 참이니
            System.out.println("master!!");
        }else //참 아니니
            System.out.println("who are you??");
    
    }
 
}
 
cs

*String[] current = user[i]; 요렇게 선언한 이유 

user[0], user[1], user[2].... 자체가 원시데이터 아니고 배열임. 그니까 형식도 그냥 String 아닌 []붙여 선언

user[0] =  {"min","1111"}

user[1] = {"kate", "2222"}

user[2] = {"jin", "3333"}

인 상황

이렇게 하면 

current = { "i번째 아이디", "i번째 비번"} 이런 배열인 상태

따라서 current[0] 은 current 배열의 첫번째 원소이므로 i번째 아이디 임.

즉 current[0] 는 user[i][0] 임 같은거

String[] current = user[i];  이거보면 수학공식처럼 양변에 [0] 붙인거랑 같은식이기도