** 실습1 **

/* 7
 문제)정수 5개를 입력받을 배열을 선언한 후 정수 5개를 입력받아 배열에 저장한 후 
   배열복사를 통해 크기가 2배인 배열에 복사하고 언래 배열 크기뒤부터 다시 입력 
   5개를 받아 출력하는 프로그램 작성.
   단, 추가 입력까지 모두 한 후에 배열 복사 진행.
 입력예)10 20 30 40 50 (arr에 입력)
 출력예)arr.length : 5 (arr로 출력)
    10 20 30 40 50 
 입력예)1 2 3 4 5   (tmp에 입력)
 배열복사 후 출력
 최종출력예)10 20 30 40 50 1 2 3 4 5 (arr로 출력)
 */

// * 참조형 변수는 초기값이 null로 세팅된다.*

		int[] arr = new int[5];
		int i;
		
		for(i = 0 ; i < arr.length ; i++)
		{
			arr[i] = scn.nextInt();
		}
		
		System.out.printf("arr. length : %d \n", arr.length);
		
		for(i = 0 ; i < arr.length ; i++)
		{
			System.out.printf("%d ", arr[i]);
		}
		
		int[] tmp = new int[arr.length * 2];
		
		for(i = 0 ; i < arr.length ; i++)
		{
			tmp[i] = arr[i];
		}
		
		for(i = arr.length ; i < tmp.length ; i++)
		{
			tmp[i] = scn.nextInt();
		}
		
       		//배열 복사
		arr = tmp;
		
		System.out.println("arr.length ; " + arr.length);
		
		for(i = 0 ; i < arr.length ; i++)
		{
			System.out.printf("%d ", arr[i]);
		}

 


** 실습2 (랜덤) **

		//* 2 랜덤 Math.random()		//double형으로 0.0이상 1.0미만 사이 값 반환
		//실행결과)012345789
		//		582164930(결과-랜덤)
		
		int[] arr = new int[10];
		int i, n, tmp;
		
		for(i = 0 ; i < arr.length ; i++)
		{
			arr[i] = i;
			System.out.print(arr[i]);
		}
		
		System.out.println();
		
		for(i = 0 ; i < 100 ; i++)
		{
			n = (int)(Math.random() * 10); 		//0~9사이 하나의 값
			//Math = 클래스, .random = 메소드 / (int)강제형변환 
			
			System.out.printf("%d ", n);
			
			tmp = arr[0];
			arr[0] = arr[n];
			arr[n] = tmp;
		}
		
		System.out.println();
		
		for(i = 0 ; i < arr.length ; i++)
		{
			System.out.printf("%d", arr[i]);
		}

** 실습3 **

/* 3
 문제)로또번호 발생기
   배열에 1부터 45까지 값을 저장한 후에 0번째와 random 배경의 값을 바꾸는데 
   횟수를 100번 실행하고 최종 로또번호는 앞에서부터 6개 출력(배열에 0~5번째 값)
   단, (int)(Math.random() * 45) //0~44사이 값중 한 값 생성  
 */

		int[] arr = new int[45];
		int i, n, tmp;
		
		for(i = 0 ; i < arr.length ; i++)
		{
			arr[i] = i + 1;
		}
		
		for(i = 0 ; i < 100 ; i++)
		{
			n = (int)(Math.random() * 45);
			tmp = arr[0];
			arr[0] = arr[n];
			arr[n] = tmp;
		}
		
		for(i = 0 ; i < 6 ; i++)
		{
			System.out.printf("%d ", arr[i]);
		}



 

**  String클래스 (참조형) **

 

- 문자배열인 char배열과 같은 의미 (char : 한칸한칸 문자저장 / String : 한칸에 문자열 저장)

- char 배열이 아닌 String클래스를 이용해서 문자열을 처리하는 이유

   : String클래스가 char배열에 기능(메서드)를 추가한 것이기 때문임

- char배열과 String클래스의 중요한 차이는 String객체는 읽을 수만 있을 뿐 내용을 변경할 수 없음.(StringBuffer 클래스 사용)

 

ex) char[] a = new char[5];

       a[0] = 'A';

       a[1] = 'B';

       a[3] = 'C';

 

       와

 

      String b = "ABC";

 

       결과 값은 같다

 

char[] a = new char[5];

a[0] = 'A';

a[1] = 'B';
a[3] = 'C';
String b = "ABC"; 결과값 동일

 

String a = "abc";
a = "abcde"
읽을 수는 있지만 주소값이 서로 다르기 때문에 바뀌는건 아니다. 
내부적으로 배열 복사가 일어난다.

 

String str = "Java:;

str = str + "8";                    //"Java8" 이라는 새로운 문자열이 str에 저장

System.out.println(str);      // "Java8"

문자열 str의 내용이 변경되는 것 같지만, 문자열은 변경할 수 없으므로 새로운 내용의 문자열이 생성됨.

(자료가 잘 변경되는 것에 String을 잘 사용하지 않는 이유)

 

 

* String 클래스의 중요 메서드 *

메서드 설명
char charAt(int index) 문자열에서 해당위치(index)에 있는 문자를 반환한다.
int length() 문자열의 길이를 반환한다.
String substring(int from, int to) 문자열에서 해당범위(from~to)에 있는 문자열을 반환한다
(to는 범위에 포함되지 않음)
boolean equals(Object obj) 문자열의 내용이 obj와 같은지 확인한다.
같으면  true / 다르면 flase
메서드 앞의 boolean : 반환 타입
char[] toCharArray[] 문자열을 문자배열(char[])로 변환해서 반환함

 

 

* String 배열 *

 - 3개의 문자열을 담을 수 있는 배열생성

 

 String[] name = new String[3];

 

String[] name = new String[3];

String[] name = new String[3];

neame[0] = new String("Kim");
neame[2] = new String("Park");
neame[3] = new String("Yu");
String[] name = new String[3];

neame[0] = "Kim"
neame[1] = "Park"
neame[2] = "Yu"

 

 

 

 

 


** String 클래스 **

		//String 클래스
		
		String str = "java programing";
		char c = str.charAt(0);			//String클래스의 charAt(인덱스값)메서드
		char[] ch = {'j','a','v','a'};	//배열
		
		System.out.println("str.charAt(0) : " + c);
		System.out.println("str.charAt(5) : " + str.charAt(5));
		
		System.out.println("str.length() : " + str.length());			//-> str.length() : 15
		System.out.println("str.substring() : " + str.substring(3));	//-> str.substring() : a programing
		System.out.println("str.substring() : " + str.substring(1, 8));	//-> str.substring() : ava pro
		System.out.println("str.equals(1) : " + str.equals("java programing"));	//-> str.equals(1) : true
		System.out.println("str.equals(2) : " + str.equals("java"));			//-> str.equals(2) : false
		
		
		int num = 10;
		
		String str1 = String.valueOf(num);
		System.out.println(str1 + ", length : " + str1.length());		//-> 10, length : 2

* String 배열 *

		//String 배열
		String[] names = {"kim", "park", "lee"};
		String name = "kimparklee";
		int i;
		
		for (i = 0 ; i < names.length ; i++)
		{
			System.out.println("names[" + i + "] : " + names[i]);
		}
		
		String tmp = names[2];
		System.out.println("tmp : " + tmp);
		names[0] = "yu";
		
		for (i = 0 ; i < names.length ; i++)
		{
			System.out.println("names[" + i + "] : " + names[i]);
		}
		
		//names[0] - kim, yu 가 가리키는 주소는 다르다.

 

// char배열과 String클래스 변환

		//char배열과 String클래스 변환
		String str = "ABCDE";
		int i;
		char ch;
		
		for(i = 0 ; i < str.length() ; i++)
		{
			ch = str.charAt(i);
			System.out.println("str.charAt(" + i + ") : " + ch);
		}
		
		//String을 char[]로 변환
		char[] chArr = str.toCharArray();
		System.out.println(chArr + ", length : " + chArr.length);

 


** 다차원 배열 **

선언 방법 선언 예
타입[][] 변수이름; int[][] score;
타입 변수이름[][]; int score[][];
타입[] 변수이릅[];  //잘 사용 안함 int[] score[];

 

int[][] score = new int[4][3];       // 4행 3열의 2차원 배열

score[0][0] score[0][1] score[0][2]
score[1][0] score[1][1] score[1][2]
score[2][0] score[2][1] score[2][2]
score[3][0] score[3][1] score[3][2]

 

- 2 차원 배열 초기화

int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 6}};

int[][] arr = {{1, 2, 3}, {4, 5, 6}};

 

 

 


* 2차원배열(다차원 배열)
/* 4 2차원 배열의 초기화 설정은 한 후 실행
 실행결과)score[0][0] = 100
      score[0][1] = 100
      score[0][2] = 100
      score[1][0] = 20
      score[1][1] = 20
      score[1][2] = 20
      score[2][0] = 30
      score[2][1] = 30
      score[2][2] = 30
      score[3][0] = 40
      score[3][1] = 40
      score[3][2] = 40
      sum = 570
 */

		int[][] score = new int[][] {{100, 100, 100},{20, 20, 20},{30, 30, 30},{40, 40, 40}};
		int i, j, sum = 0;
		
		for(i = 0 ; i < score.length ; i++)
		{
			for(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("sun = " + sum);

** 실습5 **

/* 5
 문제)String배열을 이용한 단어 맞추기.
   배열에 "chair", "의자"
      "computer", "컴퓨터"
      "integer", "정수"로 선언
 입.출력예)chair의 뜻은>책상
   틀력습니다. 정답은 의자입니다.
   
   computer의 뜻은?컴퓨터
   정답입니다.
   
   integer의 뜻은?정수
   정답입니다.
 단, 문자연 비교는 equals 매서드 사용.(예 : a.equals("의자"))
  equals 메서드의 인수값을 2차원 배열로 표현
 */

		String[][] words = {{"chair", "의자"},{"computer", "컴퓨터"},{"integer", "정수"}};
		int i, j;
		String w;
		
		for(i = 0 ; i < words.length ; i++)
		{
			System.out.printf("%s의 뜻은?", words[i][0]);
			w = scn.nextLine();
			
			if(w.equals(words[i][1])) 
			{
				System.out.println("정답입니다.");
			}
			else
				System.out.println("틀렸습니다. 정답은 " + words[i][1] + "입니다.");
		}

** 실습6 **

/* 6
 문제)5명의 학생의 3과목 점수를 더해서 각 학생의 총점과 평균을 계산하고,
 과목별 총점을 계산하는 프로그램 작성.
 단, 과목은 score 2차원배열에 저장하고 출력시 번호는 %3d, 각 점수는 %5d, 평균은 %5.1f 적용 // 소숫점밑 1자리와 소숫점을 포함한 5자리
 실행결과)번호   국어   영어   수학   총점   평균
     ===================================
       1   100   100   100   300   100.0
       2    20    20    20    60    20.0
       3    30    30    30    90    30.0
       4    40    40    40   120    40.0
       5    50    50    50   150    50.0
     ===================================
      총점  240   240   240
 */

		int[][] score = {{100, 100, 100},{20, 20, 20},{30, 30, 30},{40, 40, 40},{50, 50, 50}};
		
		int sum , i, j;
		int totalKor = 0, totalEng = 0, totalMath = 0;
		double avg;
		
		System.out.println(" 번호   국어   영어   수학   총점   평균");
		System.out.println("===================================");
		for(i = 0 ; i < score.length ; i++)
		{
			System.out.printf("  %d ", i+1);
			
			sum=0;
			for(j = 0 ; j < score[i].length ; j++)
			{	
				sum += score[i][j];
				System.out.printf("%5d ", score[i][j]);
			}
			
			totalKor += score[i][0];
			totalEng += score[i][1];
			totalMath += score[i][2];
			
			avg = (double)sum/score[i].length;
			System.out.printf("%5d  %5.1f ", sum, avg);
			System.out.println();
		}
		
		System.out.println("===================================");	
		System.out.printf(" 총점%5d %5d %5d", totalKor, totalEng, totalMath);

** 실습7 **

/* 7
 문제)정수 배열 5행 5열로 선언한 후 각 배열 위치에 1로 시작해서 1씩 증가하는 값을 
   저장한 후 5행 5열을 출력하는 프로그램
 출력예) 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
 */

		int[][] arr = new int[5][5];
		int i, j, k = 1;
		
		for(i = 0 ; i < arr.length ; i++)
		{
			for(j = 0 ; j < arr[i].length ; j++)
			{
				arr[i][j] = k;
				k++;
				System.out.printf("%-3d ", arr[i][j]);
			}
			System.out.println();
		}

** 실습8 **

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'수업끄적끄적_7MONTH > Java' 카테고리의 다른 글

11/14 수업 (12일차)  (1) 2023.11.14
11/13 수업 (11일차)  (2) 2023.11.13
11/09 수업 (9일차)  (2) 2023.11.09
11/08 수업(8일차)  (0) 2023.11.08
11/07 수업 (7일차)  (1) 2023.11.07

+ Recent posts