UNIT 6 배열 로봇 SW 교육원 3 기
학습목표 2 배열을사용핛수있다.
배열 3 배열 (Array) 이란? 같은타입 ( 자료형 ) 의여러변수를하나의묶음으로다루는것을배열이라고함 같은타입의많은양의데이터를다룰때효과적임 // 학생 30 명의점수를저장하기위해.. int student_score1; int student_score2; int student_score3;... int student_score28; int student_score29; int student_score30; // int 형 30 개의배열 int[] student_score = new int[30];
배열 4 배열의선언과생성 JAVA 에서배열은객체처럼취급됨 배열의선언은배열 ( 연속된메모리공간 ) 의시작주소를저장하기위핚참조변수를선언하는것을말함 데이터를저장하기위해선언후별도로메모리공간을생성해주어야비로소배열을사용핛수있음 배열의선언방법 타입 [ ] 변수이름 ; or 타입변수이름 [ ]; int[] student_score; String[] student_name; float[] student_gpa; short[] student_age; or int student_score[]; String student_name[]; float student_gpa[]; short student_age[];
배열 5 배열의생성 데이터를저장핛수있는공간을생성하는것 배열의생성방법 new 연산자를이용해데이터공간생성 new 연산자의결과값은데이터공간의주소 배열의타입과크기지정 int[] student_score; String[] student_name; student_score = new int[5]; student_name = new String[5]; or // 배열의선언 // 배열의선언 // 배열의생성 // 배열의생성 int[] student_score = new int[5]; // 배열의생성과 String[] student_name = new String[5]; // 선언을동시에
배열 6 배열의선언과생성 float[] gpa; gpa = new float[5]; // 배열의선언 // 배열의생성 float[] gpa; new float[5] gpa = 0x1000 gpa gpa 0x1000 gpa 0x1000 0.0f 0.0f 0.0f 0.0f 0.0f 0x1000 0.0f 0.0f 0.0f 0.0f 0.0f
배열 7 배열의참조 배열참조변수와인덱스를사용함 인덱스 : 0부터시작, 1씩증가하는연속적인정수 인덱스의범위 : 0 ~ 배열의크기 -1 float[] gpa; gpa = new float[5]; gpa = new float[5]; gpa[0] = 1.1f; gpa[1] = 2.0f; gpa[2] = gpa[0]; gpa[3] = 4.5f; gpa[4] = gpa[3]; System.out.println(gpa[1]); System.out.println(gpa[2]); System.out.println(gpa[4]); 0x1000 0x1000 1.1f 2.0f 1.1f 4.5f 4.5f gpa gpa[0] gpa[1] gpa[2] gpa[3] gpa[4]
배열의크기 8 배열은객체 배열객체의 length 멤버변수 배열의크기를저장함 int[] score = new int[5]; System.out.println(score.length);
배열의초기화 9 배열의초기화 배열을생성하면미리정해진기본값으로초기화됨 자료형 boolean char 기본값 false '\u0000' byte 0 short 0 int 0 long 0L float 0.0 double 0.0D 참조형변수 null
실습 #1 배열 10 파일명 : Array1.java package kr.robotcode.unit07; public class Array1 { public static void main(string[] args) { int count = 0; int idx = 0; int[] score = new int[5]; System.out.println(score[0]); System.out.println(score[1]); System.out.println(score[2]); System.out.println(score[3]); System.out.println(score[4]); // System.out.println(score[5]); // 오류 : 배열범위초과 score[idx++] = ++count; score[idx++] = ++count; score[idx++] = ++count; score[idx++] = ++count; score[idx++] = ++count; System.out.println(score[0]); System.out.println(score[1]); System.out.println(score[2]); System.out.println(score[3]); System.out.println(score[4]);
실습 #2 배열 11 파일명 : Array2.java package kr.robotcode.unit07; public class Array2 { public static void main(string[] args) { int[] score = new int[5]; int sum = 0; double avg = 0; score[0] = 53; score[1] = 72; score[2] = 81; score[3] = 100; score[4] = 98; sum = score[0] + score[1] + score[2] + score[3] + score[4]; avg = (double)sum / score.length; System.out.println(" 총합 :" + sum); System.out.printf(" 평균 :%.2f", avg);
실습 #3 배열 12 파일명 : Array3.java package kr.robotcode.unit07; public class Array3 { public static void main(string[] args) { int[] score = new int[0]; float[] gpa = new float[21]; System.out.println("score array:" + score); System.out.println("gpa array:" + gpa); System.out.println("score array length:" + score.length); System.out.println("gpa array length:" + gpa.length);
미션 #1 13 키보드로부터 5 개의정수를입력받아배열에저장하고합계와평균을구하는프로그램을작성하시오. 파일명 : Mission1.java 출력화면예 ) 5 개의정수를입력합니다. 첫번째정수를입력하세요 :41 두번째정수를입력하세요 :51 세번째정수를입력하세요 :63 네번째정수를입력하세요 :67 다섯번째정수를입력하세요 :45 총합 :267 평균 :53.4
다차원배열 14 배열의배열 2 차원배열 타입 [ ][ ] 변수이름 ; or 타입변수이름 [ ][ ]; or 타입 [ ] 변수이름 [ ] int[][] score; int score[][]; int[] score[]; or or
다차원배열 15 2 차원배열 int[][] score = new int[3][4]; score[0][0] = 100; score[0][1] = 90; score[0][2] = 80; score[0][3] = 70; score[1][0] = 60; score[1][1] = 50; score[1][2] = 40; score[1][3] = 30; score[2][0] = 20; score[2][1] = 10; score[2][2] = 0; score[2][3] = 0; 0x2000 0x3000 0x4000 0x5000 0x2000 0x3000 0x4000 0x5000 100 90 80 70 60 50 40 30 20 10 0 0 score score[0] score[1] score[2] score[0][0] score[0][1] score[0][2] score[0][3] score[1][0] score[1][1] score[1][2] score[1][3] score[2][0] score[2][1] score[2][2] score[2][3]
다차원배열 16 2 차원배열 int[][] score = new int[3][4]; score.length score[0].length score[1].length score[2].length 0x2000 0x3000 0x2000 0x3000 0x4000 0x5000 100 90 80 70 score score[0] score[1] score[2] score[0][0] score[0][1] score[0][2] score[0][3] 0x4000 60 50 40 30 score[1][0] score[1][1] score[1][2] score[1][3] 0x5000 20 10 0 0 score[2][0] score[2][1] score[2][2] score[2][3]
실습 #3 다차원배열 17 파일명 : Array3.java package kr.robotcode.unit07; public class Array3 { public static void main(string[] args) { int[][] score = new int[3][2]; score[0][0] = 100; score[0][1] = 90; score[1][0] = 80; score[1][1] = 70; score[2][0] = 60; score[2][1] = 50; System.out.println("score.length:" + score.length); System.out.println("score[0].length:" + score[0].length); System.out.println("score[1].length:" + score[1].length); System.out.println("score[2].length:" + score[2].length);
실습 #4 다차원배열 18 파일명 : Array4.java package kr.robotcode.unit07; public class Array4 { public static void main(string[] args) { int[][] score = new int[3][]; score[0] = new int[2]; score[1] = new int[5]; score[2] = new int[3]; score[0][0] = 100; score[0][1] = 95; score[1][0] = 90; score[1][1] = 85; score[1][2] = 80; score[1][3] = 75; score[1][4] = 70; score[2][0] = 65; score[2][1] = 60; score[2][2] = 55; System.out.println("score.length:" + score.length); System.out.println("score[0].length:" + score[0].length); System.out.println("score[1].length:" + score[1].length); System.out.println("score[2].length:" + score[2].length);
배열의초기화 19 배열의초기화 배열생성과동시에원하는값으로초기화가능 int[] score = new int[3]; name[0] = 100; name[1] = 90; name[2] = 80; int[] score = new int[]{100, 90, 80; int[] score = {100, 90, 80;
배열의복사 20 System.arraycopy int[] score = new int[3]; int[] newscore = new int[6]; score[0] = 100; score[1] = 90; score[2] = 80; 0x2000 0x3000 score newscore newscore[0] = score[0]; newscore[1] = score[1]; newscore[2] = score[2]; int[] score = new int[]{100, 90, 80; int[] newscore = new int[6]; System.arraycopy(score,0,newscore,0,score.length) 0x2000 0x3000 100 90 80 100 90 80 0 0 0 score[0] score[1] score[2] newscore[0] newscore[1] newscore[2] newscore[3] newscore[4] newscore[5]
실습 #5 배열 21 파일명 : Array5.java package kr.robotcode.unit07; public class Array5 { public static void main(string[] args) { int[] score = new int[]{98, 99, 95, 50, 80, 70, 30, 20, 10, 10; double avg = 0.0; int sum = 0; sum += score[0]; sum += score[1]; sum += score[2]; sum += score[3]; sum += score[4]; sum += score[5]; sum += score[6]; sum += score[7]; sum += score[8]; sum += score[9]; avg = (float)sum / score.length; System.out.println("sum:" + sum); System.out.println("avg:" + avg);
프로그램인자 22 eclipse 프로그램인자설정 Run > Run Configurations
프로그램인자 23 명령행을통해프로그램인자를젂달 main 메소드의인자를통해젂달받음 public static void main(string[] args){ System.out.println("args.length:" + args.length); System.out.println("args[0]:" + args[0]); System.out.println("args[1]:" + args[1]); System.out.println("args[2]:" + args[2]);
문자열 -> 기본타입형변환 24 문자열을기본타입으로형변환 boolean Boolean.parseBoolean(String s) byte Byte.parseByte(String s) short Short.parseShort(String s) int Integer.parseInt(String s) long Long.parseLong(String s) float Float.parseFloat(String s) double Double.parseDouble(String s) String s char ch = "java string"; = s.charat(0);
기본타입 -> 문자열형변환 25 기본타입을문자열로형변환 기본타입 + 문자열 = 문자열문자열 + 기본타입 = 문자열 "" + 기본타입기본타입 + "" String String.valueof(boolean b) String String.valueof(char c) String String.valueof(int i) String String.valueof(long l) String String.valueof(float f) String String.valueof(double d)
실습 #6 배열 26 파일명 : StringConvert1.java package kr.robotcode.unit07; public class StringConvert1 { public static void main(string[] my_args) { boolean b = Boolean.parseBoolean(my_args[0]); byte by = Byte.parseByte(my_args[1]); short s = Short.parseShort(my_args[2]); int i = Integer.parseInt(my_args[3]); long l = Long.parseLong(my_args[4]); float f = Float.parseFloat(my_args[5]); double d = Double.parseDouble(my_args[6]); char c = my_args[7].charat(0); System.out.println("boolean b : " + b); System.out.println("byte by : " + by); System.out.println("short s : " + s); System.out.println("int i : " + i); System.out.println("long l : " + l); System.out.println("float f : " + f); System.out.println("double d : " + d); System.out.println("char c : " + c); // ex) true 127 200 7777 123456 10.1f 20.3d java
실습 #7 배열 27 파일명 : StringConvert2.java package kr.robotcode.unit07; public class StringConvert2 { public static void main(string[] args) { char c = 'A'; boolean b = true; byte by = 123; short s = 256;; int i = 1000000000; long l = 4000000000L; float f = 3.14f; double d = 1.23456d; String strchar, strboolean, strbyte, strshort; String strint, strlong, strfloat, strdouble; strchar = String.valueOf(c); strboolean = String.valueOf(b); strbyte = String.valueOf(by); strshort = String.valueOf(s); strint = String.valueOf(i); strlong = String.valueOf(l); strfloat = String.valueOf(f); strdouble = String.valueOf(d); System.out.println(strChar + "\t" + strboolean + "\t" + strbyte + "\t" + strshort); System.out.println(strInt + "\t" + strlong + "\t" + strfloat + "\t" + strdouble);
미션 #2 28 명령행인자의개수를출력하는프로그램을작성하시오. 파일명 : Mission2.java 명령행인자의개수가 3 개가아니면 "invalid arguments" 를출력하도록프로그램을변경하시오.
미션 #3 29 명령행인자 5 개를입력받아정수로변환후합계와평균을구하는프로그램을작성하시오. 파일명 : Mission3.java