배열(Array)
::::특별한 Java Story 2013. 6. 20. 03:39 |// 배열이란 ? 많은 양의 데이터를 손쉽게 저장하기 위한 방법
package JavaTest;
public class ArrayEx1 {
public static void main(String[] args) {
int sum = 0;
float average = 0f;
int[] score = {100,90,80,70,60}; //1차원 배열 5개 선언
for(int i=0;i<score.length;i++){
sum = sum+score[i]; //sum 을 누적
}
average = (float)sum/score.length; //평균은 배열 길이로 나눈값
System.out.println("합계:"+sum);
System.out.println("평균:"+average);
}
}
---------------------------------------------------------------------------
//간단한 배열값 비교
package JavaTest;
public class ArrayEx2 {
public static void main(String[] args) {
int[] score = {79,88,91,33,100,55,65}; //1차원 배열 7개 선언
int max = score[0]; //score[0] 을 최대값으로 선언
int min = score[0]; //score[0] 을 최소값으로 선언
for(int i=1;i<score.length;i++){
if(score[i]>max){ //score[1]~[6]까지 score[0] 과 비교하여 크다면
max=score[i]; // 그 값이 최대값으로 한다.
}
if(score[i]<min){ //score[1]~[6]까지 score[0] 과 비교하여 작다면
min=score[i]; // 그 값이 최소값으로 한다.
}
}
System.out.println("최대값:"+max);
System.out.println("최소값:"+min);
}
}
-----------------------------------------------------------------------------------
// random() 메서드 활용 해보기
package JavaTest;
public class ArrayEx3 {
public static void main(String[] args) {
int[] number = new int[10];
for(int i=0;i<number.length;i++){
number[i] = i; // 0~9까지의 숫자를 number[0]~[9] 까지 초기화한다.
System.out.print(number[i]);
}
System.out.println();
for(int i=0;i<100;i++){ //100번 충분히 돌린다.
int n = (int)(Math.random()*10); // 10개중(0~9까지 숫자중) 1개를 뽑는다.
int temp = number[0]; //number[0] 값을 temp에 넣는다.
number[0] = number[n]; //number[n] 값을 number[0]에 넣는다.
number[n] = temp; //temp 값을 number[n] 에 넣는다.
//위에 3문장은 숫자를 섞을때 자주 사용되는 문장이다. 초기값을 선언을 해주어도 좋다.
}
for (int i = 0; i < number.length; i++) {
System.out.print(number[i]); //위에 섞은 값을 number[0] 부터 순서대로 출력하자!
}
}
}
-----------------------------------------------------------------------------------------------
//로또 추첨기 (중복은 허용)..
package JavaTest;
public class ArrayEx4 {
public static void main(String[] args) {
int[] ball = new int[45]; //45개의 배열을 선언한다.
for(int i=0;i<ball.length;i++){ //배열의 각 요소에 1부터 45까지 저장한다.
ball[i] = i+1; // <--배열은 0부터기때문에 왼쪽 식을 지정하여 ball[0]에 1을 저장하는..
} //로또는 0이 없기 때문에~
int temp = 0; //두값을 바꿀때 쓸 임시 temp 변수
int j = 0; //임의의 값을 저장할 변수
for(int i=0;i<100;i++){ //100번 썩이도록 ~~
j = (int)(Math.random() * 45); //배열범위 0~44 의 임의의 값을 얻는다
temp = ball[0]; //첫번째 배열 ball[0] 을 temp에 넣는다.
ball[0] = ball[j]; //랜덤으로 얻어진 ball[j]값을 첫번째 배열 ball[0] 에 넣는다.
ball[j] = temp; //temp 값을 ball[j] 에 넣는다.
//위 세가지는 섞어주기 위한!!! 필수!!
}
for(int i=0;i<6;i++){
System.out.print(ball[i]+"/ "); //배열 6개를 출력하랏!
}
}
}
---------------------------------------------------------------------------------------------------------
//버블 정렬 알고리즘
package JavaTest;
public class ArrayEx5 {
public static void main(String[] args) {
int[] number = new int[10]; //크기가 10인 배열
for(int i=0;i<number.length;i++){
System.out.print(number[i] = (int)(Math.random()*10));
} //우선 임의적으로 0~9까지 배열을 랜덤하게 뽑아낸다. 중복도 상관은 없엉! 우선 그렇게 해놓았네
//nuber[0]~[9]까지 배열 값에 랜덤 숫자를 각각 담는다.
System.out.println();
for(int i=0;i<number.length;i++){
boolean changed = false; //자리 바꿈이 발생했는지 체크!
for(int j=0;j<number.length-1-i;j++){
if(number[j]>number[j+1]){ //왼쪽값이 크면 ~ 예) number[0] > number[1] (각 배열에는 랜덤숫자가 들어가있음)
int tmp = number[j]; //바꿔라~
number[j] = number[j+1];
number[j+1] = tmp;
changed = true; //바뀌었다면 true 로~
}
}
if(!changed) break; //자리 바꿈이 없다면 반복문을 벗어난다.
for(int k=0;k<number.length;k++)
System.out.print(number[k]);
System.out.println();
}
}
}
----------------------------------------------------------------------------------------------------------------------
//P.123 [랜덤을 통해 뽑아낸 숫자를 하나씩 세어보기]
package JavaTest;
public class ArrayEx6 {
public static void main(String[] args) {
int[] number = new int[10]; //1차원 배열 10개를 number 에 담는다.
int[] counter = new int[10]; // 1차원 배열 10개를 counter 에 담는다.
for(int i=0;i<number.length;i++){
System.out.print(number[i] = (int)(Math.random()*10)); //랜덤하게 뽑은 수를 number[i] 배열에 각각 담는다.
}
System.out.println();
for(int i=0;i<number.length;i++){
counter[number[i]]++; //number[i] 의 개수를 하나씩 세어라~! 헐~
}
for(int i=0;i<number.length;i++){
System.out.println(i+"의 개수:"+counter[i]);
}
}
}
------------------------------------------------------------------------------------------------------------
//P.124 charAt(int idx) : 괄호안에 인덱스 안에 있는 문자열을 반환하는 메서드!
//**charAt 은 char 형은 사용 못하고 String 문자열에서만 사용할 수 있다.!!!!
package JavaTest;
public class ArrayEx8 {
public static void main(String[] args) {
String src = "ABCDE";
//char[] src = {'A','B','C','D','E'}; 사용못함 X
for(int i=0;i<src.length();i++){
System.out.println("src.charAt("+i+"):"+src.charAt(i));
}
}
}
------------------------------------------------------------------------------------------------------------
//P.128 다차원 배열 (열과 행)으로 구분을 짓는다.
package JavaTest;
public class ArrayEx10 {
public static void main(String[] args) {
int[][] score = { {100,100,100}, {20,20,20}, {30,30,30}, {40,40,40}, {50,50,50} };
int koreaTotal = 0;
int englishTotal = 0;
int mathTotal = 0;
System.out.println("번호 국어 영어 수학 총점 평균");
System.out.println("==================");
for(int i=0;i<score.length;i++){
int sum = 0;
koreaTotal = koreaTotal+score[i][0];
englishTotal = englishTotal+score[i][1];
mathTotal = mathTotal+score[i][2];
System.out.print(" "+(i+1)+" ");
for(int j=0;j<score[i].length;j++){
sum = sum+score[i][j];
System.out.print(score[i][j]+" ");
}
System.out.println(sum+" "+sum/(float)score[i].length);
}
}
}
-------------------------------------------------------------------------------------------------------
//P.130 배열의 복사
package JavaTest;
public class ArrayEx11 {
public static void main(String[] args) {
int[] number = {1,2,3,4,5}; //①
int[] newNumber = new int[10]; //②
for(int i=0;i<number.length;i++){
System.out.print(number[i]); //①
newNumber[i] = number[i]; //①number 배열 하나씩 newNumber 에 담는다. 5개 담아지겠다.
}
System.out.println();
for(int i=0;i<newNumber.length;i++){
System.out.print(newNumber[i]); //② 기존에 담았던 5개 그러니깐 이전 for 문을 복사함
} //나머지 5~9 까지 공간에는 '0'으로 초기화해서 담김
}
}
----------------------------------------------------------------------------------------------------------
//P.132 ( System 클래스의 arraycopy() ) 복사
package JavaTest;
public class ArrayEx12 {
public static void main(String[] args) {
char[] abc = {'A','B','C','D'};
char[] number = {'0','1','2','3','4','5','6','7','8','9'};
System.out.println(new String(abc));
System.out.println(new String(number));
char[] result = new char[abc.length+number.length];
//길이 14인 배열 result (result 는 char 형이기 때문에 1,2,3... 형식이 아닌 공백으로 14자리를 만든다.)
System.arraycopy(abc,0,number,0,abc.length);
// abc[0] 시작해서 number[0] 부터 복사하는데, 길이는(abc.length)=4만큼만 복사해라 --> ABCD456789
System.arraycopy(number, 0, result, abc.length, number.length);
// 위에 내용을 이어서 number[0] 시작해서 result[4] 부터 복사하는데...
// 길이는 (number.length)=10만큼만 복사해라 --> ABCD456789 -->' 'ABCD456789
System.out.println(new String(result)); //--> ABCD0123456789
System.arraycopy(abc,0,number,0,abc.length);
//abc[0] 시작해서 number[0] 부터 복사하는데 총 길이 4만큼만 복사해라
//--> ABCD456789
System.out.println(new String(number));
System.arraycopy(abc, 0, number, 6, 3);
//abc[0] 시작해서 number[6] 부터 복사하는데 총길이가 3만큼만 복사해라
//--> ABCD456789 --> ABCD45ABC9
System.out.println(new String(number));
}
}
-------------------------------------------------------------------------------------------------------------
'::::특별한 Java Story' 카테고리의 다른 글
배열(Array) 연습문제 (0) | 2013.06.24 |
---|---|
JSP_세팅 (0) | 2013.06.20 |
DBConn.java 데이터베이스 연결 및 오류 잡기 (The Network Adapter could not establish the connection) (0) | 2013.06.12 |
참조변수와 인스턴스의 연결 (0) | 2013.06.11 |
우편번호 DB (0) | 2013.06.10 |