728x90
오늘 배운 내용
01. 2차원 배열
02. Random(난수)
01. 2차원 배열
실습090
알파벳을 다음과 같이 출력. ( 배열 구성과 출력문은 별개로 구성)
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
char[][] arr = new char[5][5];
char ch=65;
for (int i=0;i<5;i++) // 배열에 값 할당
{
for (int j=0;j<5;j++ )
{
arr[4-j][i] =(char)ch;
ch++;
}
}
for (int i=0; i<5;i++) // 출력
{
for (int j=0;j<5 ;j++ )
System.out.printf("%3c", arr[i][j]);
System.out.println();
}
// 강사님 코드
char[][] arr = new char[5][5];
char start= 'A';
for (int i=0;i<5 ;i++ ) //01234
{
for (int j=4;j>=0 ;j-- ) //43210
{
arr[j][i] = start++; //65 66 67...
}
}
//전체 요소 출력
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();
}
실습091
다음과 같이 숫자 출력 (규칙 찾아서 식 만들기)
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
//배열 방 만들기
int [][] arr = new int[5][5]; // 5*5 배열 생성
// 배열 구성
int n=0;
for (int i=0;i<4 ;i++ )
{
for (int j=0;j<4 ;j++ )
{
n++;
arr[i][j] = n;
arr[i][4] += arr[i][j];// 10 26 42 58
arr[4][j] += arr[i][j];// 28 32 36 40
arr[4][4] += arr[i][j];// 136
}
}
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(); //개행
}
실습092(과제)
/*=================[ 2/ 15 수 ]==================
다차원 배열으로 다음과 같이 구성하고 출력한다.
단, 배열 구성, 출력 코드는 분리한다.
실행 예)
A B C D E
F G H I J
K L M N O
P Q R S T
U V W X Y
================================================*/
char[][] arr = new char[5][5]; // 5*5 배열 생성
char start = 'A';
/*====== ② 배열 구성 =====*/
for (int i = 0; i < arr.length; i++) // 외부 루프
{
for (int j = 0; j <arr[i].length; j++) //내부 루프
arr[i][j] = start++; // 'A' == 65. 아스키 값을 1씩 증가
}
/*====== ③ 배열 출력 =====*/
for (int i = 0; i < arr.length; i++) // 외부 루프
{
for (int j = 0; j <arr[i].length; j++) //내부 루프
System.out.printf("%3c", arr[i][j]); // 3만큼의 공간을 두고 출력
System.out.println();
}
실습093(과제)
char[][] arr = new char[5][5]; // 5*5 배열 생성
char start = 'A';
int n = 1 ; // 행 출력 제어할 변수
/*====== 배열 구성 =====*/
for (int i = 0; i < arr.length; i++) // 0~4행 5회 반복하는 외부 루프
{
for (int j = 0; j < n; j++) // 행에 따른 열을 1씩 증가하는 내부 루프
arr[i][j] = start++; // 'A' == 65. 아스키 값을 1씩 증가
n++;
}
/*====== 배열 출력 =====*/
for (int i = 0; i < arr.length; i++)
{
for (int j = 0; j <arr[i].length; j++)
System.out.printf("%3c", arr[i][j]); // 3만큼의 공간을 두고 출력
System.out.println();
}
/*
A
B C
D E F
G H I J
K L M N O
*/
실습094(과제)
코드블록(094)
더보기
char[][] arr = new char[5][5]; // 5*5 배열 생성
char start = 'A';
/*====== 배열 구성 =====*/
for (int i = 0; i < arr.length; i++) // 5회 외부 루프
{
for (int j = 0; j <= i; j++){ // 행에 따른 열을 1씩 증가하는 내부 루프
// j <= i (열은 행보다 크지 않음)
if (i % 2 == 0) // 0, 2, 4행일 때 ---------> (정방향)
arr[i][j] = start++;
else if(i % 2 != 0){ // 1, 3 행일 때 (역방향) <-------------
arr[i][i-j] = start++; // 진행중인 행(i)값부터 열(j)이 시작되야 함
// 행은 i로 고정, 열은 i-j // ex) i가 2이면, 2, 2-0 / 2, 2-1 / 2, 2-2 3번
} // (i+1)만큼 숑숑 실행 . (2, 2) / (2,1) / (2,0 ) == > 열이 역순 출력
}
}
/*====== 배열 출력 =====*/
for (int i = 0; i < arr.length; i++) // 배열 길이만큼 5번 외부 루프
{
for (int j = 0; j <arr[i].length; j++) // 0번 인덱스의 내부 배열만큼 5번 루프
System.out.printf("%3c", arr[i][j]); // 3만큼의 공간을 두고 출력
System.out.println();
}
/*
A
C B
D E F
J I H G
K L M N O
*/
02. Random.nextInt()
Random 클래스의 nextInt() 메소드는
0 부터 매개변수로 받은 정수 n-1 사이에서 난수를 1개 발생시킨다.
rd.nextInt(10); 0부터 9 사이의 난수 1개 발생
실습095
임의의 정수를 사용자 입력받아 그 수만큼 난수(1~100)를 만든다.
난수를 배열에 담고, 그 중 최대값과 최소값을 선택해 출력한다.
실행 예)
발생시킬 난수의 개수 입력: 10
40 99 2 4 6 23 63 12 34 25 (무작위) (배열에 담기)
>> 가장 큰 값: 99, 가장 작은 값: 2
import java.util.Scanner;
import java.util.Random; // 난수 발생을 위한 전용 객체 필요(java.util.Random)
public class Test095
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int size; // 사용자 입력값
System.out.print("발생시킬 난수의 갯수 입력 :");
size = sc.nextInt();
// size 변수 값만큼 배열 선언 및 메모리 할당
int[] arr = new int[size];
// 랜덤 클래스 기반 인스턴스 생성
Random rd = new Random();
// 배열 구성하기 (난수 저장)
for (int i =0; i < size; i++)
{ //cf. rd.nextInt(101); 0부터 100 사이
arr[i] = rd.nextInt(100) + 1; // 1부터 100 사이
}
// 배열에서 최소, 최댓값 출력
int min = arr[0], max = arr[0]; // 최소, 최댓값
for (int i = 0; i <arr.length; i++)
{
System.out.print(arr[i] + " ");
if (max < arr[i])
max = arr[i];
if (min > arr[i])
min = arr[i];
}
System.out.printf("\n>> 가장 큰 값: %d, 가장 작은 값: %d\n", max, min);
}
}
/*
발생시킬 난수의 갯수 입력 :5
46 95 19 69 98
>> 가장 큰 값: 98, 가장 작은 값: 19
계속하려면 아무 키나 누르십시오 . . .
*/
+) 번외
강의장에 있는 여러 pc들처럼 같은 네트워크를 공유하는
pc들 중 유독 하나가 느릴 때. 재부팅하는 이유.
최초로 켠 pc가 이후로 부팅된 컴퓨터들이 네트워크로 편입된 것을
목록으로 가지면서 점점 느려짐. 재부팅 시 다른 pc로 목록이 넘어간다.
728x90
반응형
'정리 노트 > 쌍용 KDT_(자바 Spring)' 카테고리의 다른 글
23.02.16(목): 배열의 복사, 접근 제어자, 정보 은닉, 캡슐화 (0) | 2023.06.28 |
---|---|
23.02.14(화): 배열 기초, 배열의 배열(다차원 배열) (0) | 2023.06.26 |
23.02.13(월): 생성자(Constructor), 초기화 블록, 메서드 오버로딩, 배열 (0) | 2023.06.07 |
23.02.10(금): 지역변수와 전역변수, 클래스와 인스턴스, null, classpath와 package (0) | 2023.05.30 |
23.02.09(목): 반복문 (별 찍기,break, continue), return, 메소드의 재귀 호출 (0) | 2023.03.26 |