본문 바로가기

Learning/JAVA

1차원 배열, 2차원 배열

  • 왼쪽정렬 역삼각형 별찍기 (Exam01)
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
package day03;
public class Exam01 {
    public static void main(String[] args) {
        
        for(int i=9;i>0;i-=2) {
            for(int j=1;j<=i;j++) {
                System.out.print("*");
            }System.out.print("("+i+")");
            System.out.println();
        }
                
        for(char i='I';i>='A';i-=2) {
            for(char j='A';j<=i;j++) {
                System.out.print(j);
            }
            System.out.println("("+i+")");
       }
for(char i='I';i>='A';i-=2) {
            for(char j='A';j<=i;j++) {
                System.out.print((char)(j+1)); //char형으로 표시해서 출력해 달라고 하는 캐스팅 (형변환)
            }
            System.out.println("("+i+")");
        }
        System.out.println("======");
    }
}
cs

 

 

  • ********...z 그 다음 행 ******...yz 만들기 (Exam01)
1
2
3
4
5
6
7
8
9
10
for(char i='z';i>='a';i--) {
            for(char j='a';j<='z';j++) {
                if(j>=i) {
                    System.out.print((char)j);  
                }else {
                    System.out.print("*");
                }
            }
            System.out.println();
        }

 

 

  • 1부터10까지의 합: 55, 11부터20까지의 합: 155 (Exam02)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package day03;
public class Exam02 {
    public static void main(String[] args) {
        
        for(int i=1;i<=100;i+=10) {
            int sum=0//sum을 초기화시켜야 다시 11부터 20까지, 21부터 30까지 각각 더할 수 있음.
            int j;
            for(j=i;j<i+10;j++) {
                sum+=j;
            }
            System.out.println(i+"부터"+(j-1)+"까지의 합: "+sum);
        }
        System.out.println();
    }
}

 

 

  • 1차원 배열 선언 (Exam03)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package day03;
public class Exam03 {
    public static void main(String[] args) {
        
        int[] arr = new int [5]; //배열 arr 선언
        arr[0=100;
        arr[1=200;
        arr[2=300;
        arr[3=400;
        arr[4=500;
        System.out.println(arr[3]); //400
        
        
        int[] test =new int[20]; //배열은 반드시 길이를 할당해줘야함. int형 배열은 0으로 초기화.
        System.out.println(test[5]); //0
        for(int i=0;i<test.length;i++) { //배열 0에 0, 1에 1 저장.
            test[i]=i;
        }
        System.out.println("test[5]: "+test[5]);
        test[5]=3000//test[5]값을 3000으로 변경
        System.out.println("test[5]: "+test[5]);
        
        //int [] arr= new int[5]; // 0 0 0 0 0 이라는 배열이 만들어짐
        //1 2 3 4 5 라는 값으로 배열을 만들고 싶다면
        int[]arr1= new int[5];
        for(int i=0;i<arr1.length;i++) { //"배열명.length"는 배열의 길이를 반환함.
            arr1[i]=i+1;
        }
        for(int i=0;i<arr1.length;i++) {
            System.out.println("arr1["+i+"]:"+arr1[i]);
        }
        
        int[]arr2 = {1,2,3,4,5,6,7};
        for(int i=0;i<arr2.length;i++) {
            System.out.println("arr2["+i+"]:"+arr2[i]);
        }
        
        String[]str = {"one","two","three"};
        for(int i=0;i<str.length;i++) {
            System.out.println("str["+i+"]:"+str[i]);
        }
        
        String[]str1= new String[3];
        str1[0]="one";
        str1[1]="tow";
        str1[2]="three";
        for(int i=0;i<str1.length;i++) {
            System.out.println("str1["+i+"]:"+str1[i]);
        }
    }
}
cs

 

 

  • 원하는 개수를 입력, 그 개수 만큼 수를 입력, 합계와 입력데이터 출력 (배열 이용) (Exam04)
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
package day03;
import java.util.Scanner;
public class Exam04 {
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        System.out.println("입력 갯수>>");
        int cnt=sc.nextInt();
        
        System.out.println("데이터 입력>>");
        int sum=0;
                
        int[]arr= new int[cnt];
        
        for(int i=0;i<cnt;i++) { 
            arr[i]=sc.nextInt(); 
            sum+=arr[i];            
        }
        System.out.println("합계: "+sum);
        for(int i=0;i<cnt;i++) {
            System.out.println("입력 데이터: "+arr[i]);
            //for문 안에 안넣으면 오류발생. 배열 arr의 주소 0부터 입력 개수cnt 전까지 차례대로 출력함.
        }
    }
}
cs

 

 

  • 배열의 최대값, 최대값의 위치, 배열 데이터들의 합계 구하기 (Exam05)
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
package day03;
public class Exam05 {
    public static void main(String[] args) {
        
        int[] data= {10,5,90,100,250,30,77};
        
        //최대값을 구하기
        //최대값의 위치 구하기
        
        int max=data[0]; //0번째 데이터가 제일 크다고 max변수를 선언
        int maxPos=0;
        int sum=0;
                        
        for(int i=0;i<data.length;i++) {
            sum+=data[i];
            if(max<data[i]) {
                max=data[i];
                maxPos=i+1//배열의 주소는 0부터지만 앞에서부터 개수를 센다고 생각했을때 최대값 250은 5번째에 있다.
            }
        }System.out.println("최대값: " +max);
        System.out.println("최대값의 위치: "+maxPos);
        System.out.println("배열의 합계: "+sum);
        System.out.println("배열의 평균: "+(float)sum/data.length);
    }
}
cs

 

 

  • 찾는 수를 입력, 그 수의 위치 구하기. 없으면 없다고 출력 (Exam05)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Scanner sc=new Scanner(System.in);              
        System.out.println("찾는 수를 입력하세요>>");
        int search=sc.nextInt();
        boolean flag=false//변수를 선언
        
        for(int i=0;i<data.length;i++) {
            if(search==data[i]) {
                System.out.println("찾는 수 "+search+" :"+(i+1));
                flag=true//변수의 참 여부에 따라 조건을 설정->출력문 하나만 나오도록.
            }
        }
        if(flag==false) {
            System.out.println("찾는 수"+search+"없음");
        }
cs

 

 

  • 길이가 10인 배열 선언, 난수 발생시켜서 배열에 할당, 난수가 0일 경우 다시 난수 발생시키기, 배열 출력 (Exam06)
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 day03;
public class Exam06 {
    public static void main(String[] args) {
        
        //난수 발생. double 형을 돌려줌. 부동 소수점. 0.0에서 1.0사이. 정수가 필요하다면 곱한 뒤에 int형으로 바꿔주기
        /*System.out.println((int)(Math.random()*50));
         * 크기가 10인 배열을 만들고
         * 0에서 50사이 난수를 발생시켜
         * 0이 아닌 값을 배열에 넣으세요 -> 난수가 0일때는 다시 난수 발생
         * 중복허용
         */
        
        int[] arr=new int[10]; //길이 10인 배열 선언
        int n=0;
        while(n<arr.length){ //배열크기 10번 반복
            int r=(int)(Math.random()*50); //난수발생을 변수 r에 할당
            if(r==0) { //난수가 0인지 판단
                continue//난수가 0이라면 다시 올라감. 다시 반복=>while의 continue라는 걸 기억하기
            }else { //난수가 0이 아님
                arr[n]=r;
                n++;
            }
        }
        for(int i=0;i<arr.length;i++) {
            System.out.print(arr[i]+"\t");
        }
    }
}
cs

 

 

  • 2차원 배열을 입력하고 출력하는법 (Exam07)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package day03;
public class Exam07 {
    public static void main(String[] args) {
        
        int[][] arr=new int[3][4];
        arr[0][0]=1;
        arr[0][1]=2;
            
        int[][] a= {{1,2,3,4},{11,22,33,44},{111,222,333,444}};
        System.out.println(a[1][2]); //33
        for(int i=0;i<a.length;i++) { //a.length는 중괄호가 "3개"=행의 길이
            for(int j=0;j<a[i].length;j++) {   //a[i].length는 {1,2,3,4}의 길이. 2차원 배열 열의 길이.
                System.out.print(a[i][j]+"\t"); //2차원 배열 출력
            }System.out.println();
        }
        
    }
}
cs

 

 

  • 원하는 금액을 입력, 배열을 이용하여 권종별로 몇 장이 필요한지 출력 (Exam08)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package day03;
import java.util.Scanner;
public class Exam08 {
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        System.out.println("금액입력>>"); //65589
        int unit[]= {50000,10000,1000,500,100,50,10,1};
        int money=sc.nextInt();
            
        for(int i=0;i<unit.length;i++) {
            if(money/unit[i]>0) {  //몫을 먼저 구한뒤에 나머지를 계산해야 하니까 %연산자 보다 /연산자가 더 먼저 나와야 함.
                System.out.println(unit[i]+":"+money/unit[i]); //result값을 따로 주지 않고 money/arr[i]로 표현.
                money=money%unit[i];
            }
        }
        
        
    }
}
cs