







[출처]자바의 정석
실습을 해보자.
public static void main(String[] args) {
/* 배열 : 같은 타입, 같은 의미를 가지는 변수들의 집합(참조변수)
* 일반적으로 객체 생성 키워드 => new
* 배열 선언 방법
* 타입[] 배열이름;
* 타입 배열이름[];
* 선언 초기화 같이 하는 방법
* 타입[] 배열이름 = new 타입[길이]; // 가장 많이 사용
* 타입[] 배열이름 = new 타입[] {값1, 값2 .....}
* 타입[] 배열이름 = {값1, 값2......} // 연습할 때 선언과 동시에 초기화 가능
* -배열의 길이는 0이상이여야 한다.
* -배열[5] => 0 1 2 3 4
* -배열의 길이 확인 => 배열이름.length 를 이용
*/
int a = 10; // 지역 변수(일반 변수)
int arr1[]; // 선언만 한 경우
arr1 = new int[5]; // 초기화
int arr2[] = new int[5];
int[] arr3 = new int[] {1,2,3,4,5,};
int[] arr4 = {1,2,3,4,5,};
/* 배열 사용 이유
* 관리가 편함, 반복문 사용할 수 있기 때문에 많은 양의 데이터도 쉽게 사용 가능.
* 배열의 번지는 0부터 시작, 길이는 개수로 표현되기 때문에
* 길이가 5라고 할때 0 1 2 3 4
* 마지막 번지 길이-1 까지
*/
// 배열안의 값을 변경
arr3[0] = 10;
arr3[1] = 20;
for (int i = 0; i < arr3.length; i++) {
System.out.print(arr3[i] + " ");
}
System.out.println();
System.out.println("-----------");
// arr1 배열에 1 ~ 5까지의 값을 저장하고 출력
for (int i = 0; i < arr1.length; i++) {
arr1[i] = i + 1;
System.out.print(arr1[i] + " ");
}
System.out.println();
System.out.println(Arrays.toString(arr1));
}
public static void main(String[] args) {
// 5개짜리 배열 생성 1 ~ 5까지의 값을 입력하고 출력
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
arr[i] = i + 1;
System.out.printf("arr["+"%d"+"] = %-2d%n", arr[i], arr[i]);
}
/* 5명의 점수를 입력 받아서 배열에 저장하고,
* 점수의 합계와 평균을 출력
*/
Scanner scan = new Scanner(System.in);
int[] student = new int[5];
int sum = 0;
System.out.println("5명의 점수를 입력 하세요.");
for (int i = 0; i < student.length; i++) {
student[i] = scan.nextInt();
sum += student[i];
}
double avg = (double)sum / student.length;
System.out.printf("5명 점수의 합계 : %d%n평균 : %.1f", sum, avg);
}
public static void main(String[] args) {
int[] arr = new int[] {12, 15, 25, 60, 70, 88, 90};
// arr 배열의 합계, 평균, 최대값, 최소값 출력
int sum = 0;
int max = arr[0];
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
// if (arr[i] > max) {
// max = arr[i];
// }
// else {
// min = arr[i];
// }
max = Math.max(max,arr[i]);
min = Math.min(min,arr[i]);
}
double avg = (double)sum / arr.length;
System.out.printf("합계 : %d%n평균 : %.1f%n최대값 : %d%n최소값 : %d%n",sum,avg,max,min);
}
public static void main(String[] args) {
/*
* 10개짜리 배열 생성 후 1 ~ 50사이의 랜덤수를 생성한 후 배열에 저장 배열을 출력 합계, 평균, 최대, 최소 값을 출력
*/
int size = 10;
int[] arr = new int[size];
int sum = 0;
int max = arr[0];
int min = 50;
System.out.println("1 ~ 50 까지의 랜덤수를 배열에 저장 하세요.");
// 배열을 완성하는 중
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 50) + 1;
System.out.printf("arr[" + "%d" + "]=%2d, ", i, arr[i]);
}
// 완성된 배열에서 합계, 최대값, 최소값 구하기
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
// max = Math.max(max, arr[i]);
// min = Math.min(min, arr[i]);
if (max < arr[i]) {
max = arr[i];
}
if (min > arr[i]) {
min = arr[i];
}
System.out.println();
double avg = (double) sum / arr.length;
System.out.printf("합계 : %d%n평균 : %.1f%n최대값 : %d%n최소값 : %d%n", sum, avg, max, min);
}
}
public static void main(String[] args) {
/* 국어, 영어, 수학 이라는 단어를 담을 배열을 생성 후
* 글자를 입력 => 출력
*/
String[] arr = new String[3];
arr[0] = "국어";
arr[1] = "영어";
arr[2] = "수학";
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
// 향상된 for문 (for each)
// 한번에 하나씩 객체의 전체 탐색시 사용
for (String str : arr) {
System.out.print(str + " ");
}
}
public static void main(String[] args) {
/* 1 ~ 10까지 담고있는 배열을 생성 => 출력
*/
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
arr[i] = i + 1;
System.out.print(arr[i] + " ");
}
System.out.println();
/* 배열 섞는 코드
* 랜덤으로 번지를 선택해서 순차적으로 하나씩 교환
* int tmp = arr[i];
* arr[i] = arr[j];
* arr[j] = tmp;
* (int)(Math.random()*개수)+시작
* 범위를 min = 0, max = arr.length // 10개
* 범위로 나오면 min = 1, max = 15까지
*/
for (int i = 0; i < arr.length; i++) {
int random = (int)(Math.random()*arr.length);
int tmp = arr[i];
arr[i] = arr[random];
arr[random] = tmp;
}
System.out.println("--섞은 후--");
for (int i : arr) {
System.out.print(i + " ");
}
// 오름차순정렬 : 작은수부터 정렬
// 내림차순정렬 : 큰수부터 정렬
// 3 6 5 7 2 10 8 9 4 1
// 0번지를 뒤에 숫자랑 비교해서 더 작은수를 0번지로 교환 -1차
// 1번지를 뒤에 숫자랑 비교해서 더 작은수를 1번지로 교환 -2차
// .....마지막 번지까지 비교해서 종료
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if (arr[i] > arr[j]) { // 오름차순 반대는 < 내림차순
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
System.out.println();
System.out.println("--정렬 후--");
for (int i : arr) {
System.out.print(i + " ");
}
}
public static void main(String[] args) {
/* 1 ~ 50까지의 랜덤수를 10개 생성하여 배열에 저장하고, 출력
* 오름차순 정렬하여 한번더 출력
*/
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
int random = (int)(Math.random()*50)+1;
arr[i] = random;
System.out.print(arr[i] + " ");
}
System.out.println();
System.out.println("--오름차순정렬--");
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if (arr[i] > arr[j]) { // 정렬 로직
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
for (int i : arr) {
System.out.print(i + " ");
}
}
public static void main(String[] args) {
/* 1 ~ 45까지 숫자를 랜덤으로 6개 추출하는 로또번호 추출
* 오름차순 정렬 되도록 출력
*/
int[] arr = new int[6];
for (int i = 0; i < arr.length; i++) { // 0번지 부터 끝번지까지 값을 저장
arr[i] = (int)(Math.random()*45)+1;
System.out.print(arr[i] + " ");
}
System.out.println();
System.out.println("----정렬 후----");
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if (arr[i] > arr[j]) { // 오름차순정렬
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
for (int i : arr) {
System.out.print(i + " ");
}
}
public static void main(String[] args) {
/*
* 숫자를 입력받아 입력 받은 숫자를 거꾸로 출력 ex) 11456 => 65411 => 6+5+4+1+1 => 결과값 출력 힌트) /, %
* 이용
*/
Scanner scan = new Scanner(System.in);
System.out.println("숫자를 입력 하세요.");
long num = scan.nextLong();
System.out.println("--------split으로 출력--------");
String num1 = String.valueOf(num); // num을 문자열로 변경해서 num1에 저장
String[] number = num1.split(""); // num1을 number 배열에 저장
System.out.print("입력한 숫자 :");
for (String i : number) {
System.out.printf("[%s]", i); // number를 향상된 for문으로 출력
}
System.out.println();
System.out.print("거꾸로 숫자 :");
long sum = 0;
for (int i = number.length-1; i >= 0; i--) {
sum += Integer.parseInt(number[i]);
System.out.printf("[%s]", number[i]);
if (i > 0) {
System.out.print("+");
}
else {
System.out.print("=");
}
}
System.out.println(" 총 합 : " + sum);
System.out.println("--------정수 타입으로 출력--------");
System.out.print("입력한 숫자 :" + num);
System.out.println();
System.out.print("거꾸로 숫자 :");
long sum2 = 0;
int cnt = 0;
while (true) {
long tmp = num % 10; // tmp에 나머지 값 저장
num /= 10; // num에 남은 몫 값 저장
sum2 += tmp; // sum에 나머지 값 합산
System.out.printf("[%d]", tmp); // 나머지 값 출력
if (num > 0) {
System.out.print("+");
}
if (num == 0) { // 몫 값이 0이되면 탈출
System.out.print("=");
break;
}
}
System.out.println(" 총 합 : "+ sum2);
scan.close();
}
multiArray(2차원배열)
public static void main(String[] args) {
/* 2차원 배열
* 자료형[][] 배열명 = new 자료형[길이][길이];
*
*/
int[][] arr = new int[5][3]; // 행5, 열3
int cnt = 1;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) { // i 행의 length
arr[i][j] = cnt;
cnt++;
System.out.print(arr[i][j] + " ");
}
System.out.println(); // 행마다 줄바꿈
}
}
arrayCopy
public static void main(String[] args) {
/* 배열은 길이를 가지고 있음
* 한번 정해진 배열의 길이는 이후 추가 / 삭제 불가능
* 배열의 길이를 늘리거나 혹은 줄이거나 할 경우 배열 복사를 이용
* System.arraycopy(이전배열, 시작번지, 새배열, 시작번지, 개수)
*/
// 배열 복사를 이용하여 복사하는 경우
int arr[] = new int[] {1, 2, 3, 4};
int arr1[] = new int[10];
for (int i = 0; i < arr.length; i++) {
arr1[i] = arr[i]; // arr1로 arr의 값을 복사
}
System.out.println("--arr배열 출력--");
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
System.out.println("--arr1배열 출력--");
for (int num : arr1) {
System.out.print(num + " ");
}
int arr2[] = new int[arr.length*2];
// arr => arr2 배열복사
System.arraycopy(arr, 0, arr2, 0, arr.length);
System.out.println();
System.out.println("--arr2배열 출력--");
for (int num : arr2) {
System.out.print(num + " ");
}
}'Java 공부 기록' 카테고리의 다른 글
| 지금까지 내용 요약 정리 (0) | 2023.06.06 |
|---|---|
| String 클래스, StringBuffer 클래스 (0) | 2023.06.06 |
| 반복문(while, do while) (0) | 2023.06.06 |
| break문, continue문 (0) | 2023.06.06 |
| 반복문(for문) (0) | 2023.06.06 |