배열
같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
배열의 선언과 생성
배열의 선언 - 배열을 다루기 위한 참조변수 선언
1. 타입[] 변수이름
- Int[] score;
- score = new int[5];
2. 타입 변수이름[]
배열의 인덱스
각 요소에 자동으로 붙는 번호
"인덱스(Index)의 범위는 0부터 배열길이-1"까지
public class Ex5_1_tmp {
public static void main(String[] args) {
// int[] score; 1. 배열 score를 선언(참조변수)
// score = new int[5]; 2. 배열의 생성(int저장공간 x 5)
int [] score = new int[5]; // 배열의 선언과 생성을 동시에
score[3] =100;
}
배열의 길이
"배열은 한번 생성하면 그 길이를 바꿀 수 없다."
배열의 초기화
배열의 각 요소에 처음으로 값을 저장하는 것
int[] score = { 1, 2, 3,4,5};
배열의 출력
char[] ChArr
캐릭터 배여일 때만 출력 가능
// 배열의 요소를 순서대로 하나씩 출력
for( int i=0; i<Arr.length; i++){
System.out.println(Arr[i]);}
//배열의 모든 요소를 출력
System.out.println(Arrays.toString(Arr));
배열의 활용
총점과 평균 구하기
public class Ex5_2 {
public static void main(String[] args) {
int sum=0;
float average =-0f;
int[] score = {100,88,100,100,90};
for (int i=0; i <score.length; i++){
sum += score[i];
}
average = sum /score.length; //계산결과를 Float으로 얻기
System.out.println("총점 : " + sum);
System.out.println("평균 : " + average);
}
}
최대값과 최소값
public class Ex5_3 {
public static void main(String[] args) {
int[] score = {79, 88, 91, 33, 100, 55,95};
int max = score[0];
int min = score[0];
for(int i=1; i <score.length; i++) {
if(score[i]> max){
max = score[i];
} else if(score[i]<min){
min = score[i];
}
}
System.out.println("최대값 :"+max);
System.out.println("최소값 :"+min);
}
}
섞기(Shuffle)
import java.util.Arrays;
public class Ex5_4 {
public static void main(String[] args) {
int[] numArr = {0,1,2,3,4,5,6,7,8,9};
System.out.println(Arrays.toString(numArr));
for (int i =0; i<100; i++){
int n = (int)(Math.random()*10);
int tmp = numArr[0];
numArr[0] = numArr[n];
numArr[n] =tmp;
}
System.out.println(Arrays.toString(numArr));
}
}
로또 번호
import java.util.Arrays;
public class Ex5_5 {
public static void main(String[] args) {
int[] ball = new int[45]; //45개 정수값을 저장하기
//배열의 각 요소에 1~45값을 저장
for(int i=0; i<ball.length; i++){
ball[i]=i+1; // ball[0]에 1이 저장된다.인덱스는 0부터 시작하니까
}
System.out.println(Arrays.toString(ball));
int tmp =0; // 두 값을 바꾸는데 사용할 임시변수
int j =0; // 임의의 값을 얻어서 저장할 변수
// 배열의 i번째 요소와 임의의 요소에 저장된 값을 서로 바꿔서 값을 저장
// 0번째부터 5번째 요소까지 모두 6개만 바꾼다.
for (int i=0; i<6; i++){
j=(int)(Math.random()*45); //0~44범위 임의의 수
tmp =ball[i];
ball[i] = ball[j];
ball[j] = tmp;
System.out.println(Arrays.toString(ball));
}
//배열 ball의 앞에서부터 6개의 요소를 출력한다.
for(int i=0; i<6; i++){
System.out.printf("ball[%d]=%d%n", i, ball[i]);
}
}
}
결과
[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]
[12, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1, 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]
[12, 7, 3, 4, 5, 6, 2, 8, 9, 10, 11, 1, 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]
[12, 7, 28, 4, 5, 6, 2, 8, 9, 10, 11, 1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45]
[12, 7, 28, 24, 5, 6, 2, 8, 9, 10, 11, 1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 4, 25, 26, 27, 3, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45]
[12, 7, 28, 24, 27, 6, 2, 8, 9, 10, 11, 1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 4, 25, 26, 5, 3, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45]
[12, 7, 28, 24, 6, 27, 2, 8, 9, 10, 11, 1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 4, 25, 26, 5, 3, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45]
ball[0]=12
ball[1]=7
ball[2]=28
ball[3]=24
ball[4]=6
ball[5]=27
Process finished with exit code 0
String 배열의 선언과 생성
String 클래스
1. String클래스는 char[] 와 메서드(기능)를 결합한 것
String클래스 = char[] + 메서드(기능)
2. String 클래스는 내용을 변경할 수 없다. (read only)
String클래스의 주요 메서드
char charAt(int index) : 문자열에서 해당위치(index)에 있는 문자를 반환한다.
int length() : 문자열의 길이를 반환한다
String substring (in from, int to) : 문자열에서 해당 범위(from~to)의 문자열을 반환한다 (to 는 포함 안됨)
boolean equals(Object obj): 문자열의 내용이 같은지 확인한다.
char[] toCharArray(): 문자열을 문자배열로 변환해서 반환
커맨드 라인을 통해 입력받기
public class Ex5_7 {
public static void main(String[] args) {
System.out.println("매개변수의 개수:"+args.length);
for(int i=0; i< args.length;i++){
System.out.println("args["+i+"] = \""+ args[i] +"\"");
}
}
}
run configuration의 arguments를 수정해주면,,,,
2차원 배열
테이블 형태의 데이터를 저장하기 위한 배열
int[][] score = new int[4][3]; //4행 3열의 2차원 배열 score
2차원 배열의 초기화
int[][] arr = {
{1,2,3}
{4,5,6}
};
2차원 배열 예제
class Ex5_8 {
public static void main(String[] args) {
int[][] score = {
{ 100, 100, 100 }
, { 20, 20, 20 }
, { 30, 30, 30 }
, { 40, 40, 40 }
};
int sum = 0;
for (int i = 0; i < score.length; i++) {
for (int j = 0; j < score[i].length; j++) {
System.out.printf("score[%d][%d]=%d%n", i, j, score[i][j]);
sum += score[i][j];
}
}
System.out.println("sum=" + sum);
}
}
class Ex5_9 {
public static void main(String[] args) {
int[][] score = {
{ 100, 100, 100}
, { 20, 20, 20}
, { 30, 30, 30}
, { 40, 40, 40}
, { 50, 50, 50}
};
// 과목별 총점
int korTotal = 0, engTotal = 0, mathTotal = 0;
System.out.println("번호 국어 영어 수학 총점 평균");
System.out.println("=============================");
for(int i=0;i < score.length;i++) {
int sum = 0; // 개인별 총점
float avg = 0.0f; // 개인별 평균
korTotal += score[i][0];
engTotal += score[i][1];
mathTotal += score[i][2];
System.out.printf("%3d", i+1);
for(int j=0;j < score[i].length;j++) {
sum += score[i][j];
System.out.printf("%5d", score[i][j]);
}
avg = sum/(float)score[i].length; // 평균
System.out.printf("%5d %5.1f%n", sum, avg);
}
System.out.println("=============================");
System.out.printf("총점:%3d %4d %4d%n", korTotal, engTotal, mathTotal);
}
}
import java.util.Scanner;
class Ex5_10{
public static void main(String[] args) {
String[][] words = {
{"chair","의자"}, // words[0][0], words[0][1]
{"computer","컴퓨터"}, // words[1][0], words[1][1]
{"integer","정수"} // words[2][0], words[2][1]
};
Scanner scanner = new Scanner(System.in);
for(int i=0;i<words.length;i++) {
System.out.printf("Q%d. %s의 뜻은?", i+1, words[i][0]);
String tmp = scanner.nextLine();
if(tmp.equals(words[i][1])) {
System.out.printf("정답입니다.%n%n");//%n은 개행
} else {
System.out.printf("틀렸습니다. 정답은 %s입니다.%n%n",words[i][1]);
}
} // for
} // main의 끝
}
Arrays로 배열 다루기
문자열의 비교와 출력 - equals(), toString()
Arrays.toString(arr); 1차원 배열
Arrays.deepToString(arr2D); 2차원 배열
Arrays.equlas(arr1, arr2); 1차원배열 비교
Arrays.deepEquals(arr1, arr2); 2차원 이상 배열 비교
배열의 복사 - copyOf(), copyOfRange()
배열의 정렬 - sort()
Arrays.sort(arr); // 오름차순으로정렬
'Java > 자바의 정석' 카테고리의 다른 글
남궁성 자바의 정석 기초편 ch 6 return문 호출스택 매개변수 static 메서드 인스턴스 메서드 (0) | 2022.11.21 |
---|---|
남궁성 자바의 정석 기초편 ch 6 객체지향 언어 클래스 (0) | 2022.11.21 |
남궁성 자바의 정석 기초편 ch 4 조건문과 반복문 (0) | 2022.11.20 |
남궁성 자바의 정석 기초편 ch 3 (0) | 2022.11.19 |
남궁성 자바의 정석 기초편 ch 2 (0) | 2022.11.19 |