제 7주 2015년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교 프로그래밍 기초 제 7주 2015년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
라이브러리 활용
라이브러리(library) 자주 사용되는 기능을 미리 프로그램으로 작성하여 한 곳에 저장해 놓은 것.
라이브러리와 API Document http://docs.oracle.com/javase/7/docs/api/ API: Application Programming Interface 라이브러리에 들어 있는 클래스이 지원하는 메소드와 메소드 사용법을 보여줌 아래 사이트에서 온라인으로 볼 수 있으며 http://docs.oracle.com/javase/7/docs/api/ 내려받아 내 컴퓨터에 저장해 놓고 볼 수 도 있음
The API Document
import java.util.Scanner; 라이브러리에 들어 있는 클래스 이용하기 import java.util.Scanner; 클래스들은 그룹으로 분류되어 있으며 이 그룹을 패키지라고 함 Scannner 클래스는 java.util 패키지에 들어 있음 Scanner 클래스의 full name = java.util.Scanner 클래스를 import하면 프로그램을 작성할 때 클래스의 full name(java.util.Scanner) 대신 Scanner라고만 적을 수 있음
java.lang 패키지 java.lang 패키지에는 가장 기본적이며 많이 사용되는 클래스들이 들어 있음 java.lang 패키지에 들어 있는 클래스들은 import 하지 않고도 짧은 이름을 사용할 수 있음 String 클래스와 System 클래스는 java.lang 패키지에 들어 있음
Math 클래스 java.lang.Math
static double random() Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0.
static double abs(double a) 메소드 이름 static double abs(double a) 메소드를 사용할 때 double 타입 인수를 하나 주어야 한다. 메소드가 실행되고 나면 double 타입 결과를 반환한다. (인수로 주어진 수의 절대값) * abs: absolute value (절대값)
static double random() 메소드 이름 static double random() 메소드를 사용할 때 인수를 주지 않는다. 메소드가 실행되고 나면 double 타입 결과를 반환한다. (0.0 이상 1.0 미만 난수가 반환됨)
10개의 난수 생성 public class TenRandomNumbers { public static void main(String[] args) for (int i = 1; i <= 10; i++) System.out.println(Math.random()); }
출력 0.6516831128923004 0.3159760705754926 0.945877632966408 0.04538322890407964 0.8815999823052094 0.07672479266883347 0.04423548066038108 0.4441137107417066 0.15348060768674676 0.1833850393131755
주사위 모의실험 한 개의 주사위를 던지는 모의실험에는 1에서 6까지의 정수 난수가 필요하다. int r; r = Math.random(); 0.0 < r < 1.0. 0.0 < 6*r < 6.0 (int)(6 * Math.random()) // 0 이상 6 미만 정수 난수 (int)(6 * Math.random()) + 1 // 1 이상 7 미만 정수 난수
정수를 생성하기 위한 Math.random() 사용 예를 들어, 만약 r = 0.8929343993861253 이라면, 6*r = 5.3576063963167518 이고 정수 값을 얻기 위하여, 6 * r을 정수로 형변환 함으로써 소수점 아래 부분을 손쉽게 버릴 수 있다. 따라서, (int)(6*Math.random()) + 1 는 1에서 7미만의 임의의 정수를 반환한다. (int)(52*Math.random() )+1은 1에서 53미만의 임의의 정수를 반환한다.
예제 주사위 2개를 100번 굴려서 합이 7이 나온 횟수를 출력하는 프로그램
public static void main(String [] args) int die1,die2; import java.util.*; public class Dice { public static void main(String [] args) int die1,die2; int sum, sevens = 0; for (int i = 1; i <= 100; i++) die1 = (int)(6*Math.random())+1; // 임의의 정수 1..6 die2 = (int)(6*Math.random())+ 1; sum = die1 + die2; if (sum == 7) sevens = sevens + 1; } System.out.println("The number of sevens is " + sevens);
java.util.Scanner int nextInt() 정수를 하나 읽음 double nextDouble() 실수를 하나 읽음 String next() 단어를 하나 읽음 String nextLine() 한 줄을 읽음
문자열을 정수로 변환
문자열을 실수로 변환
Strings 문자열 java.lang.String
String int literal 10, 2300 String literal "Java", "123", "" // 그 변수가 문자열을 가리키게 한다. String lang = "Java"; String lang = new String("Java"); (위 두 문장은 같다.) int literal 10, 2300 // int 타입 변수를 선언하고 // 그 변수에 값을 저장한다. int num1 = 10; int numb2 = 2300; “Java” num1 lang 10 num2 2300 문자열은 객체이다.
String concatenation String s = "꽃이" + " 되었다."; "꽃이" " 되었다." s "꽃이 되었다." 새 객체가 만들어진다.
Multiline strings System.out.print("그대가 \n" + "곁에 있어도 \n" + " 나는 그대가 그립다."); 그대가 곁에 있어도 나는 그대가 그립다.
Comparing strings String a = "Kangwon"; String b = "kangwon"; System.out.println(a.equals(b)); a "Kangwon" 네가 b와 내용이 같니? 예 b "Kangwon"
Comparing strings String a = "Kangwon"; String b = "KANGWON"; System.out.println(a.equals(b)); System.out.println(a.equalsIgnoreCase(b)); // 대소문자 무시 String c = input.nextLine(); System.out.println("Kangwon".equals(c)); // 입력된 단어가 일치하나?
Test for reference equality String a = new String("Kangwon"); String b = new String("Kangwon"); System.out.println(a == b); a b "Kangwon" "Kangwon" a와 b가 같은 객체를 가리키나? false
String 메소드 int length( ) s.length() s에 있는 문자들의 수를 반환한다. String s = “Jaws”; s.length() --> 4
String 메소드 String substring(int index) s.substring(index) index 이후의 내용으로 새 문자열을 만들어 반환한다. String s = “The Sixth Sense”; s.substring(7) --> “th Sense”
String 메소드 String substring(int start, int end) s.substring(start, end) start 부터 end 직전까지의 내용으로 새 문자열을 만들어 반환 (inclusive) (exclusive) String s = “TheSixthSense”; s.substring(1, 3) --> “he”
String 메소드 String toLowerCase() String toUpperCase() s.toLowerCase() 모든 대문자를 소문자로 바꾼 새 문자열을 만들어 반환 s.upperCase() 모든 소문자를 대문자로 바꾼 새 문자열을 만들어 반환 String s = “The Lion King”; s.toLowerCase() --> “the lion king”
java.lang.StringBuilder StringBuilder sb = "꽃이"; sb.append(" 되었다."); sb "꽃이" " 되었다." sb "꽃이 되었다." 기존 객체가 변한다.
끝.