1~10까지 난수를 100개 발생시켜 한 줄에 10개씩 출력하고 마지막에 각 숫자별 발생 횟수를 출력하는 프로그램을 작성

	int num; // 난수를 발생시키기 위한 변수
	int [] count = new int[10]; // 1~10까지 난수의 발생결과의 갯수를 저장하는 곳

	System.out.println("발생된 난수(1~10)...");
	for(int i=1; i<=100; i++) {
		num = (int)(Math.random() * 10) + 1;
   		// 0.0 ~ 0.9 사이의 실수를 발생시킨다 따라서 1~10까지의 수로 바꿔준다.
   		count[num-1]++; // 배열의 첫번째 방의 주소는 0부터 시작임.
    
    	System.out.printf("%3d", num);
    	if(i%10 == 0) { //한줄에 10개씩 출력
    		System.out.println();
        }
	}
System.out.println("\n숫자별 발생횟수 : ");
for(int i=0; i<count.length; i++) {
	System.out.println((i+1)+ "의 발생횟수 :  " + count[i]);
    }

int []a = new int[] {2,4,6,8,10};

선언과 동시에 초기화하는 경우 크기를 명시하지 않는다.

int []b = {1,3,5,7,9};

배열선언과 초기화를 동시에 하는 경우 new int[]를 생략할 수 있다.

 

배열은 한번 크기를 지정하면 크기를 변경할 수 없고

이미 선언된 배열은 가비지컬렉터 garbage collector의 회수 대상이 된다. (할당된 메모리를 회수한다.)

따라서 기존 내용은 사라지고 

메모리 할당은 다시 하게 되면 그 배열안에 값은 0으로 초기화 된다.

편차 ? (점수-평균)

Scanner sc = new Scanner(System.in);

String[] name = new String[5];  

int[] score = new int[5];

int tot;

double ave, s;  //평균 소수가 나올 수 있으므로 편차(점수-평균)와 함께 실수형으로 잡아준다.

 

tot = 0;

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

System.out.print((i+1)+"번째 이름 ? ");

name[i] = sc.next();

System.out.print("     점수 ? ");

score[i] = sc.nextInt();

 

tot +=score[i];

}

 

=========5명의 이름과 점수를 입력 받고 총점을 계산한다.

ave = (double)tot/score.length;

총점을 데이터 입력 갯수(5개)로 나누어 평균을 구한다.

 

System.out.println("\n이름\t점수\t편차");

System.out.println("------------------------");

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

s= score[i] - ave;

// 편차는 점수 - 평균

System.out.println(name[i]+"\t"+score[i]+"\t"+s);

// 이름과 점수 1~5까지 들어있는 값을 출력하다.

System.out.println("------------------------");

System.out.println("총합 : " + tot);

System.out.println("------------------------");

System.out.println("평균 : " + ave);

int []a = new int [5]; // 배열 선언 및 메모리 할당

a[0]=10; a[1]=50; a[2]=25; a[3]=30; a[4]=40;

 

// 배열이 가지고 있는 값 전체 출력의 방법- 1

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

System.out.print(a[i]+"  ");

}

 

// 전체 출력의 방법- 2

for(int n: a) {

System.out.print(n+"  ");

}

 

향상된 for문은 배열이 가지고 있는 수만큼 반복 실행을 해준다,

for(자료형 변수 : 배열 등 컬렉션) {

//실행문

}

int []a = new int[5];
System.out.println("배열 요소의 개수 : " +a.length); // 배열 a의 길이

a[0]=2;
a[1]=4;
a[2]=6;
a[3]=8;
a[4]=10;

int s=0;

for(int i=0; i<a.length; i++) {  
// i가 배열에 들어있는 모든 수를 더해야 하므로 
//배열a의 길이보다 작으면 계속 i++
s+=a[i]; // 합을 계속 더해줌
System.out.print(a[i]+"  "); // 배열에 들어있는 값은 계속 출력해줌
}

System.out.println("\n합 : " + s);

int []arr; // 정수값을 저장할 수 있는 배열을 선언. 선언만 하고 메모리는 할당하지 않은 상태
arr = new int[5]; // 5개의 정수를 저장할 수 있도록 메모리를 할당함.

// 배열명 = new 자료형[크기]
// 크기는 int형이고 음수값은 런타임오류.
// 위 두줄은 [배열선언 및 메모리 할당] 인데 이것은 한줄로 표현이 가능하다.

int []arr = new int[5];
// 5칸의 배열이 생기는데 arr[0], arr[1], arr[2], arr[3], arr[4] 까지 사용이 가능하다. 
// 0부터 시작에 주의.
// 배열은 메모리 할당 후 각 요소에 초기값을 대입하지 않은 경우 0으로 초기화된다.

arr[2] = 10;
arr[4] = 5;
System.out.println(arr[0]); // 일시에 0에 들어있는 값은 0.
System.out.println(arr[2]); // 여기는 위에서 2에 10을 넣었기 때문에 10.
System.out.rpintln(arr[5]); // 이것은 런타임오류
// 첨자의 범위를(0부터 4까지) 벗어났기 때문이다.

+ Recent posts