JAVA
-
Test099~100 배열의 복사2020.09.06
-
Test098 배열과 난수 처리2020.09.06
-
Test097 배열의 배열(2차원 배열) (11)2020.09.06
-
Test096 배열의 배열(2차원 배열) (10)2020.09.06
-
Test095 배열의 배열(2차원 배열) (9)2020.09.06
-
Test094 배열의 배열(2차원 배열) (8)2020.09.06
Test099~100 배열의 복사
※ 배열 변수의 복사에는 데이터 복사, 주소값 복수 두 가지 형태가 존재한다.
주소값 복사 → 얕은 복사 → 원본을 수정하면 복사본에 영향을 미치게 되는 복사 방법.
(배열 뿐 아니라 모든 참조형 데이터에 해당하는 방법)
※ 데이터 복사 → 깊은 복사 → 실제 요소가 들어있는 값에 대한 복사로
원본을 수정해도 복사본에 영향을 미치지 않는 복사 방법.
주소값 복사의 예)
// Test100.java 파일과 비교~!!!
// 주소값 복사
public class Test099
{
public static void main(String[] args)
{
int[] nums = {10, 20, 30, 40, 50}; //-- 배열의 원본
int[] copys; //-- 복사본으로 만들 배열
int temp; //-- 실습 진행(테스트)을 위한 임시 변수
//check~!!!
copys = nums; //-- 복사~!!!
temp = nums[0]; //-- temp = 10
nums[0] = 1000; //-- nums = {1000, 20, 30, 40, 50}
//copys 배열의 전체 요소 출력
for (int i = 0; i < nums.length; i++)
System.out.print(copys[i] + " ");
System.out.println();
//--==>> 1000 20 30 40 50
System.out.println("temp : " + temp);
}
}
데이터 복사의 예)
// 데이터 복사
//-- int형 배열에 대한 깊은 의미의 복사를 처리하는
// 메소드를 정의하는 형태로 실습을 진행한다.
public class Test100
{
public static void main(String[] args)
{
int[] nums = {10, 20, 30, 40, 50}; //-- 배열 원본
int[] copys1 = nums; //-- 얕은 의미의 배열 복사 수행
// (주소값 복사)
int[] copys2 = copyArray(nums); //-- 깊은 의미의 배열 복사 수행
// (사용자 정의 메소드 호출)
int[] copys3 = (int[])nums.clone(); //-- 깊은 의미의 배열 복사 수행
// (자바 제공 → clone() 메소드 호출)
// 원본 배열 요소의 수정~!!!
nums[1] = 2;
for (int i = 0; i < copys1.length; i++)
System.out.print(copys1[i] + " ");
System.out.println();
//--==>> copys1 : 10 2 30 40 50
for (int i = 0; i < copys2.length; i++)
System.out.print(copys2[i] + " ");
System.out.println();
//--==>> copys2 : 10 2 30 40 50
for (int i = 0; i < copys3.length; i++)
System.out.print(copys3[i] + " ");
System.out.println();
//--==>> copys3 : 10 2 30 40 50
}
// 매개변수로 int 배열 타입을 넘겨받아
// 이를 복사한 후
// 복사한 배열을 결과값으로 반환하는 기능을 가진 메소드 정의
public static int[] copyArray(int[] os) // {10, 20, 30, 40, 50}
{
// 매개변수로 넘겨받은 배열(os)
// 즉, 원본 배열 만큼의 배열방(메모리 공간, 길이)을 확보한
// 복사할 배열방 생성
int[] result = new int[os.length]; // int[] result = new int[5];
// 각각의 원본 배열(os)에 담겨있는 각각의 요소들을 복사 배열(result)에 담아내기
for (int i = 0; i < os.length; i++)
{
result[i] = os[i];
}
// 보가한 배열(result) 반환
return result;
}
}'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
| Test109 주민등록번호 유효성 검사 프로그램 (0) | 2020.09.07 |
|---|---|
| Test108 만년달력 프로그램 (0) | 2020.09.07 |
| Test098 배열과 난수 처리 (0) | 2020.09.06 |
| Test097 배열의 배열(2차원 배열) (11) (0) | 2020.09.06 |
| Test096 배열의 배열(2차원 배열) (10) (0) | 2020.09.06 |
Test098 배열과 난수 처리
※ Random 클래스 활용
사용자로부터 임의의 정수를 입력받아 그 정수의 갯수만큼 난수(1~100)를 발생시켜서 배열에 담아내고
배열에 담겨있는 데이터들 중 가장 큰 값과 가장 작은 값을 선택하여 결과를 출력하는 프로그램을 구현한다.
실행 예)
발생시킬 난수의 갯수 입력 : 6
(53 17 69 45 10 55 → 무작위로 발생한 정수 형태의 난수들...)
(int[] arr = {53, 17, 69, 45, 10, 55}; → 배열에 담아내기)
가장 큰 값 : 69, 가장 작은 값 : 10
계속하려면 아무키나 누르세요...
import java.util.Scanner;
import java.util.Random;
public class Test098
{
public static void main(String[] args)
{
// Scanner 인스턴스 생성
Scanner sc = new Scanner(System.in);
// 안내 메세지 출력
System.out.print("발생시킬 난수의 갯수 입력 : ");
int size = sc.nextInt();
// size 변수에 담아낸 수 만큼의 배열방 만들기
// (배열 선언 및 메모리 할당)
int[] arr = new int[size];
// 무작위 숫자(난수)를 발생시키기 위해서는
// 난수 발생 전용 객체 필요하다.
// → "java.util.Random"
Random rd = new Random();
// ※ Random 클래스의 "nextInt(int n)" 메소드
//-- 0 ~ 매개변수로 넘겨받은 정수 n-1 까지의 수 중
// 무작위 정수(난수) 1개를 발생시킨다.
// 테스트(확인)
//System.out.println("발생한 난수 : " + rd.nextInt(10));
// 0 ~ 9 까지의 무작위 정수 1개~!!!
// 배열 구성(초기화) → 발생한 난수로 배열방에 값을 담아내기
for (int i = 0; i < size; i++)
{
arr[i] = rd.nextInt(100);
//-- 0 ~ 99 무작위 정수 한 개 발생
arr[i] = rd.nextInt(100) + 1;
//-- 1 ~ 100 무작위 정수 한 개 발생
}
// 테스트(확인) → 구성된 배열의 전체 요소 출력
/*
for (int i = 0; i < arr.length; i++)
System.out.print(arr[i] + " ");
System.out.println();
//--==>> 발생시킬 난수의 갯수 입력 : 10
// 80 68 31 9 25 40 89 44 93 18
// 계속하려면 아무 키나 누르십시오 . . .
*/
// 가장 큰 값, 가장 작은 값 확인
int max, min; //-- 최대값, 최소값
max = min = arr[0]; //-- max = min = 80;
for (int i = 1; i < arr.length; i++)
{
if(max < arr[i])
max = arr[i]; //-- max=93;
if(min > arr[i])
min = arr[i]; //-- min 9;
}
// 최종 결과 출력
System.out.printf("가장 큰 값 : %d, 가장 작은 값 : %d\n", max,min);
}
}
실행 결과
// 실행 결과 /* 발생시킬 난수의 갯수 입력 : 10 가장 큰 값 : 96, 가장 작은 값 : 7 계속하려면 아무 키나 누르십시오 . . . */
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
| Test108 만년달력 프로그램 (0) | 2020.09.07 |
|---|---|
| Test099~100 배열의 복사 (0) | 2020.09.06 |
| Test097 배열의 배열(2차원 배열) (11) (0) | 2020.09.06 |
| Test096 배열의 배열(2차원 배열) (10) (0) | 2020.09.06 |
| Test095 배열의 배열(2차원 배열) (9) (0) | 2020.09.06 |
Test097 배열의 배열(2차원 배열) (11)
※ 배열의 배열(다차원 배열)을 활용하여 다음과 같은 데이터를 요소로 취하는 배열(5*5)을 구성하고
그 결과를 출력하는 프로그램을 구현한다.
단, 배열을 구성하는 구문과 출력하는 구문은 별도로 작성할수 있도록 한다.
실행 예)
A
C B
D E F
J I H G
K L M N O
계속하려면 아무 키나 누르세요...
public class Test097
{
public static void main(String[] args)
{
char[][] arr = new char[5][5];
char ch ='A';
for (int i = 0; i < arr.length; i++)
{
for (int j = 0; j <= i ; j++)
{
if(i % 2 == 0)
arr[i][j] = ch++;
else
arr[i][i-j] = ch++;
}
}
// 전체 요소 출력
for (int i = 0; i < arr.length; i++)
{
for (int j = 0; j < arr[i].length; j++)
{
System.out.printf("%2c",arr[i][j]);
}
System.out.println();
}
}
}
실행 결과
// 실행 결과 /* A C B D E F J I H G K L M N O 계속하려면 아무 키나 누르십시오 . . . */
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
| Test099~100 배열의 복사 (0) | 2020.09.06 |
|---|---|
| Test098 배열과 난수 처리 (0) | 2020.09.06 |
| Test096 배열의 배열(2차원 배열) (10) (0) | 2020.09.06 |
| Test095 배열의 배열(2차원 배열) (9) (0) | 2020.09.06 |
| Test094 배열의 배열(2차원 배열) (8) (0) | 2020.09.06 |
Test096 배열의 배열(2차원 배열) (10)
※ 배열의 배열(다차원 배열)을 활용하여 다음과 같은 데이터를 요소로 취하는 배열(5*5)을 구성하고
그 결과를 출력하는 프로그램을 구현한다.
단, 배열을 구성하는 구문과 출력하는 구문은 별도로 작성할수 있도록 한다.
실행 예)
A
B C
D E F
G H I J
K L M N O
계속하려면 아무 키나 누르세요...
public class Test096
{
public static void main(String[] args)
{
char[][] arr = new char[5][5];
char ch ='A';
for (int i = 0; i < arr.length; i++)
{
for (int j = 0; j <= i ; j++)
{
arr[i][j] = ch++;
}
}
// 전체 요소 출력
for (int i = 0; i < arr.length; i++)
{
for (int j = 0; j < arr[i].length; j++)
{
System.out.printf("%2c",arr[i][j]);
}
System.out.println();
}
}
}
실행 결과
// 실행 결과 /* A B C D E F G H I J K L M N O 계속하려면 아무 키나 누르십시오 . . . */
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
| Test098 배열과 난수 처리 (0) | 2020.09.06 |
|---|---|
| Test097 배열의 배열(2차원 배열) (11) (0) | 2020.09.06 |
| Test095 배열의 배열(2차원 배열) (9) (0) | 2020.09.06 |
| Test094 배열의 배열(2차원 배열) (8) (0) | 2020.09.06 |
| Test093 배열의 배열(2차원 배열) (7) (0) | 2020.09.06 |
Test095 배열의 배열(2차원 배열) (9)
※ 배열의 배열(다차원 배열)을 활용하여 다음과 같은 데이터를 요소로 취하는 배열(4*5)을 구성하고
그 결과를 출력하는 프로그램을 구현한다.
단, 배열을 구성하는 구문과 출력하는 구문은 별도로 작성할수 있도록 한다.
실행 예)
1 2 3 4 10
5 6 7 8 26
9 10 11 12 42
13 14 15 16 58
28 32 36 40 136
계속하려면 아무 키나 누르세요...
방법 ①
public class Test095
{
public static void main(String[] args)
{
int[][] arr = new int[5][5];
int n = 0;
for (int i = 0; i < 4; i++) // i → 0 1 2 3
{
for (int j = 0; j < 4; j++) // j → 0 1 2 3
{
n++; // n → 1 2 3 4 5 6 7 ...
arr[i][j] = n;
arr[i][4] += arr[i][j]; // 00 →1 01 →2 02 →3 03 →4
arr[4][j] += arr[i][j];
arr[4][4] += arr[i][j];
}
}
// 전체 요소 출력
for (int i = 0; i < arr.length; i++)
{
for (int j = 0; j < arr[i].length; j++)
{
System.out.printf("%4d",arr[i][j]);
}
System.out.println();
}
}
}
방법 ②
// 5행 5열 배열 준비
int[][] arr = new int[5][5];
int n = 1;
// 배열 요소 초기화
for (int i = 0; i < arr.length; i++)
{
for (int j = 0; j < arr[i].length; j++)
{
if(i==4 || j==4)
arr[i][j] = 0;
else
arr[i][j] = n++;
}
}
for (int i = 0; i < arr.length-1; i++ )
{
for (int j = 0; j < arr[i].length-1; j++)
{
arr[i][4] += arr[i][j];
}
for (int k = 0; k < arr[i].length - 1; k++)
{
arr[4][i]+=arr[k][i];
}
}
for (int i=0; i < arr.length ;i++ )
{
arr[4][4]+=arr[i][4];
}
// 전체 요소 출력
for (int i = 0; i < arr.length; i++)
{
for (int j = 0; j < arr[i].length; j++)
{
System.out.printf("%4d",arr[i][j]);
}
System.out.println();
}
실행 결과
// 실행 결과 /* 1 2 3 4 10 5 6 7 8 26 9 10 11 12 42 13 14 15 16 58 28 32 36 40 136 계속하려면 아무 키나 누르십시오 . . . */
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
| Test097 배열의 배열(2차원 배열) (11) (0) | 2020.09.06 |
|---|---|
| Test096 배열의 배열(2차원 배열) (10) (0) | 2020.09.06 |
| Test094 배열의 배열(2차원 배열) (8) (0) | 2020.09.06 |
| Test093 배열의 배열(2차원 배열) (7) (0) | 2020.09.06 |
| Test092 배열의 배열(2차원 배열) (6) (0) | 2020.09.06 |
Test094 배열의 배열(2차원 배열) (8)
※ 배열의 배열(다차원 배열)을 활용하여 다음과 같은 데이터를 요소로 취하는 배열(5*5)을 구성하고
그 결과를 출력하는 프로그램을 구현한다.
단, 배열을 구성하는 구문과 출력하는 구문은 별도로 작성할수 있도록 한다.
실행 예)
E J O T Y
D I N S X
C H M R W
B G L Q V
A F K P U
계속하려면 아무 키나 누르세요...
public class Test094
{
public static void main(String[] args)
{
// 5행 5열 배열 준비
int[][] arr = new int[5][5];
char ch ='A';
// 배열 요소 초기화
for (int i = 0; i < arr.length; i++)
{
for (int j = arr.length - 1; j >= 0; j--)
{
arr[j][i] = ch++;
}
}
// 전체 요소 출력
for (int i = 0; i < arr.length; i++)
{
for (int j = 0; j < arr[i].length; j++)
{
System.out.printf("%3c",arr[i][j]);
}
System.out.println();
}
}
}
실행 결과
// 실행 결과 /* E J O T Y D I N S X C H M R W B G L Q V A F K P U 계속하려면 아무 키나 누르십시오 . . . */
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
| Test096 배열의 배열(2차원 배열) (10) (0) | 2020.09.06 |
|---|---|
| Test095 배열의 배열(2차원 배열) (9) (0) | 2020.09.06 |
| Test093 배열의 배열(2차원 배열) (7) (0) | 2020.09.06 |
| Test092 배열의 배열(2차원 배열) (6) (0) | 2020.09.06 |
| Test091 배열의 배열(2차원 배열) (5) (0) | 2020.09.06 |