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

이미 선언된 배열은 가비지컬렉터 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까지) 벗어났기 때문이다.

소수 ? 1과 자기자신의 수로만 나눠지는 수. (1제외)

int cnt=0; // 한 줄에 10개씩 출력하기 위한 변수

 

jump:

for(int n=2; n=100; n++) { //2부터 시작해서 100까지 

for(int i=2; i<=(n/2); i++){ //

if(n%i==0){ //2로 나누어 떨어지거나 어떤수의 배수로 나눴을때 0이면 소수가 아니기 때문에 다시 첫 번째 for문으로 감.

// 

continue jump;

}

}

System.out.printf("%4d", n); //4칸으로 출력해라.

if(++cnt%10 == 0) {

System.out.println();

}

}

for(int i=1; i<=3; i++) {   // 3번반복

for(int j=1; j<=3; j++) {  // 9번반복

if(i+j==4){

continue;  // i+j가 4면 조건으로 감.

}

System.out.println(i+", "+j);  // (1, 1) (1, 2) (2, 1) (2, 3) (3, 2) (3, 3)

}

}

===========

for(int i=1; i<=3; i++) {   // 3번반복

for(int j=1; j<=3; j++) {  // 9번반복

if(i+j==4){

break;  // i+j가 4면 조건을 끝냄.

}

System.out.println(i+", "+j);  // (1, 1) (1, 2) (2, 1)  따라서 2, 2부터는 나오지 않고

}  // i가 3이 되었을 때도 3+1은 4이므로 뒤는 다 나오지 않음.

}

===========

 

gogo:

for(int i=1; i<=3; i++) { //3번반복

for(int j=1; j<=3; j++) { //9번반복

if(i+j==4) {

continue gogo; // i+j가 4면 gogo로 감.

}

System.out.println(i+ ", "+j); (1, 1) (1, 2) (2, 1) 

}

}

 

===========

gogo:

for(int i=1; i<=3; i++) { //3번반복

for(int j=1; j<=3; j++) { //9번반복

if(i+j==4) {

break gogo; // i+j가 4면 gogo밖으로 나가버림. (끝낸다?의 느낌??)

}

System.out.println(i+ ", "+j); (1, 1) (1, 2) 

}

}

===========

Scanner sc = new Scanner(System.in);

double input, sum;

sum=0;

 

for(int i=0); i<5; i++) {

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

input = sc.nextDouble();

if(input <=0.0){

continue; // 0보다 작으면 i++로 간다. 즉 밑에 더하기를 실행하지 않음.

}

sum+=input;

}

System.out.println("결과 : " + sum);

sc.close();

+ Recent posts