Java_05 Java 2011. 10. 29. 16:09

* 배열 : 동일한 자료형의 다수의 데이터를 저장하고 처리하는 경우 유용하게 사용된다.

- 초기에 방의 갯수를 설정 후 변경할 수 없다. (변경하려면 프로그램을 재작성해야 함)

- 형식
  int month[5]={1, 2, 3, 4, 5};
  정수형으로 5개의 방(length=5)을 가지고 있는 month라는 변수명의 배열을 선언하고 각각의 방의 데이터의 값에
  접근하기 위해서는 해당 값의 인덱스값을 알아야 하는데 다음과 같다.
  month[0], month[1], month[2], month[3], month[4] 으로 0부터 4까지의 5개의 위치정보를 명시하는
  인덱스값이 있다.
  month[]={1, 2, 3, 4, 5}; 식으로 배열의 길이를 표시하지 않아도 자동으로 그 길이를 인식한다.

- 예제: 만년 달력 만들기
  2월의 날수 29일 조건 : 년도가 4의 배수이고 100의 배수가 아니거나 400의 배수
  · 1월:31,  2월:28,  3월:31,  4월:30,  5월:31,  6월:30,  7월:31,  8월:31,  9월:30, 10월:31, 11월:30, 12월:31
    y%4==0&&y%100!=0||y%400==0   



- Selection Sort

배열의 값 중 가장 작은 값을 찾아 i[0] 번째의 값과 위치를 바꾸고
i[0]번째의 값을 제외한 나머지 값들 중 가장 작은 값을 찾아 i[1]번째 값과 위치를 바꾸고..
i[0]번째와 i[1]번째 값을 제외한 나머지 값들 중 가장 작은 값을 찾아 i[2]번째 값과 위치를 바꾸고..
반복하여 오름차순 정렬이 되록 i[n]일때 n개의 값에 각각 n-1번 비교 한다.

→왼쪽부터 오름차순으로 정렬

 


예제)

  1. public class Test3{
  2.     public static void main(String[] agrs){
  3.         int a[]{56,85,75,10,52};
  4.  
  5.         System.out.print("Source Date : ");
  6.         for(int i=0; i<a.length; i++)
  7.             System.out.print(a[i]+" ");
  8.         System.out.println();
  9.  
  10.         // Selection Sort
  11.         int temp;
  12.         for (int i=0; i<a.length-1; i++){
  13.             for (int j=i+1; j<a.length; j++){
  14.                 if(a[i]>a[j]){ // 오름차순(swap): 부등호만 바꾸면 내림차순
  15.                     temp=a[i];
  16.                     a[i]=a[j];
  17.                     a[j]=temp;
  18.                 }
  19.             }
  20.         }
  21.         System.out.print("Sort Data : ");
  22.         // 향상된 for문
  23.         for (int n : a){ // for(자료형 접근변수: 배열이나 컬렉션 변수)
  24.             System.out.print(n + " ");
  25.         }
  26.         System.out.println();
  27.     }
  28. }


- Bubble Sort
인접한 두 값을 비교하여 정렬


→오른쪽부터 오름차순 정렬

△ 이미지 출처: http://en.wikipedia.org/wiki/Bubble_sort


예제)
  1. public class Test4{
  2.     public static void main(String[] args){
  3.    
  4.     int a[]={56, 85, 75, 18, 52};
  5.     System.out.print("Source Data : ");
  6.     for(int n : a){
  7.         System.out.print(n+" ");
  8.     }
  9.     System.out.println();
  10.  
  11.     java.util.Arrays.sort(a); // sort 한줄;;
  12.  
  13.     System.out.print("Sort Data : ");
  14.     for(int n : a){
  15.         System.out.print(n+" ");
  16.     }
  17.     // Bubble sort 시작
  18.     boolean flag;
  19.     int pass=1, temp;
  20.  
  21.     do{
  22.         flag=false;
  23.         for (int i=0; i<a.length-pass; i++){
  24.             if(a[i]>a[i+1]){
  25.                 temp=a[i];
  26.                 a[i]=a[i+1];
  27.                 a[i+1]=temp;
  28.                 flag=true;
  29.             }
  30.         }
  31.         pass++;
  32.     }while (flag);
  33.     // Bubble sort 끝
  34.     System.out.print(" Sort Data : ");
  35.     for(int n : a){
  36.         System.out.print(n + " ");
  37.     }
  38.     System.out.println();
  39.     }
  40. }


- 2차원 배열
1차원 배열과 의미는 같으나 i[행][열] 형태로 열의 방만 있는 것이 아닌 행도 존재 한다.

- 행열의 합 구하기



위의 형태를 소스로 풀어보면.... class 선언 생략)

int a[][] = {{5,4,1},{6,3,3},{5,2,4}};
int b[][] = {{8,4,3},{7,7,8},{5,7,2}};
int c[][] = new int[3][3];

// 2차원 행렬의 합 구하기
for(int i=0; i<a.length; i++){ // 행의 수 a.length
    for(int j=0; j<a[i].length;j++){ // 열의 수 a[i].length
        c[i][j]=a[i][j]+b[i][j];
    }
}
// 출력a
System.out.println("a 행렬..");
for(int i=0; i<a.length; i++){
    for(int j=0; j<a[i].length; j++){
        System.out.printf("%4d", a[i][j]);
    }
    System.out.println();
}
// 출력b
System.out.println("b 행렬..");
for(int i=0; i<b.length; i++){
    for(int j=0; j<b[i].length; j++){
        System.out.printf("%4d", b[i][j]);
    }
    System.out.println();
}
// 출력c
System.out.println("c행렬합..");
for(int i=0; i<c.length; i++){
    for(int j=0; j<c[i].length; j++){
        System.out.printf("%4d", c[i][j]);
    }
    System.out.println();


- 행렬의 곱 구하기


위의 형태를 소스로 풀어보면.... class 선언 생략)

int a[][] = {{5,4,1},{6,3,3},{5,2,4}};
int b[][] = {{8,4,3},{7,7,8},{5,7,2}};
int c[][] = new int[3][3];

// 행렬의 곱구하기
int d[][]=new int[3][3];
    for(int i=0; i<3; i++) {
        for(int j=0; j<3; j++) {
            for(int k=0; k<3; k++) {
                d[i][j] += a[i][k]*b[k][j];
            }
        }
    }   
// 행렬의 곱
System.out.println("행렬곱..");
for(int i=0; i<d.length; i++){
    for(int n : d[i]){
        System.out.printf("%4d",n);
    }
    System.out.println();


- 결과



* 향상된 for문
상단에 sort(정렬)관련 예제에 소스는 적혀 있지만 잘 이해가 안가서 밑에서 다시 정리

int a[] = {56,85,75,10,52}; 이라는 배열을 선언하고 반복문을 돌리자 하면

for (int i=0; i<a.length; i++){
    int n = a[i];
}System.out.print (n + " ");

위와 같이 작성해야 하겠지만
아래처럼 간단? 하게 작성 가능하다는 것 같은데

for (int n : a){
    System.out.print (n + " "); 
}

위의 소스를 풀어보면
int n은 배열에 들어있는 한개의 값을 저장해 둘 수 있는 정수형 변수를 선언한 것이고
for문이 반복될 때마다 n에 a라는 배열안의 데이터가 모두 소진 될때까지 반복된다? 라는 것 같다.
참고로 int n 의 변수 선언은 for문의 바깥으로 빠질 수 없다.
: 은 오른쪽 배열의 데이터가 왼쪽 변수에 대입된다라는 것이고
a 는 위에서 설명했듯 배열의 이름이다... 아! 정리해보니 쉽네? =ㅅ=;;


* Array.sort()
Bubble sort의 소스를 풀어놓은 상단의 예제의 11번 줄에 
java.util.Arrays.sort(a) 라는 아주 간단하다 싶은 한줄의 소스로
boolean 어쩌구 do while안에 얽혀 있는 for와 if의 만찬을 엎어버린 꼴이다 싶다.

Arrays는 자동으로 정렬을 도와주는 API라고 불리우는 라이브러리 같은 존재라 하는데
깊은 이해도로써의 정리를 하고 싶어 구글링을 해봤지만 도통 아직은(?) 이해할 수 없는 말들 뿐;;
그저 자동으로 정렬을 도와주는 아주 고마운 친구라는 것 정도로 정리하고 말아야하나...


* 명령행 인수
명령프롬포트 창에서 java Test8 AA BB CC 라고 입력시 입력된 문자열이
args[0] = AA 
args[1] = BB
args[2] = CC 
이렇게 저장이 된다는 것 같은데 왜 필요한건지 어떻게 쓰이는지에 대해선
솔직히 잘 모르겠다..-.-a





문제1) 년, 월, 일을 입력 받아 요일 구하기
(솔직히 위에 만년달력 문제부터 잘 이해가 안감..)


문제2) 다음과 같이 출력하는 프로그램 작성
A B C D E
J  I  H H F
K L M N O
T S R Q P
U V W X Y
(아스키코드를 for문을 이용하여 지그재그 형태로 반복되도록...이라지만
보고 또봐도 다시 해보려하면 안되니 그냥 외워야 하나)













'Java' 카테고리의 다른 글

Java_07  (0) 2011.11.01
Java_06  (0) 2011.10.31
Java_05  (0) 2011.10.29
Java_04  (0) 2011.10.27
Java_03  (0) 2011.10.26
Java_02  (0) 2011.10.25
Java_02 Java 2011. 10. 25. 19:15

1. 프로그램 구성 요소

  • 키워드(keyword) : 예약어라고도 한다. Java자체에 미리 정의된 단어들. 다른목적으로 사용 불가
  • 식별자 : 변수명, 메소드, 클래스명. 사용자에 의해 정의된다. 언더바는 영어로 구분되고 대문자와
    소문자는 다른 변수로 구분되고 첫 글자로는 유니코드자바레터(알파벳,_,$)와 각국언어로 가능하나
    영어로 시작함이 일반적이다. 시작 글자로 괄호나 하이폰(-)은 금지.
  • 리터럴 : 고정되어 있는 값. 쉽게 말해 상수
  • 외에 연산자, 주석, 컴마, 괄호, dot, 배열, 세미콜론(문장과 문장사이 구분, 스페이스/탭) 등이 있다.


2. 자바의 기본 자료형

  • 논리형
    • boolean : C언어를 예로 참과 거짓을 1과 0으로 표현하지 않고 true 와 false의 값만 갖는다
      (1Byte)


  • 정수형
    • byte : 1Byte=8bit, 2진수로 보면 7칸의 숫자와 1칸의 부호를 의미하는 값을 가지고 있다.
      부호를 의미하는 첫번째 숫자를 부호와 절대치 라고 한다는 것 같다.

      ■ □ □ □ □ □ □ □ → ■ 이 양수의 값을 취할때 0 / 음수의 값을 취할때 1
      7  6  5  4  3  2  1  0 → 2의 제곱 표시 : 최대값은 27-1 이므로 0 1 1 1 1 1 1 1 = 127 이며
      음의 최대값은 1 0 0 0 0 0 0 0 = -128 으로
      표현범위는 -128 ~ 127 이 된다. 나머지도 이런식
    • char : C언어를 또 예로 들자면 char형은 1byte이다. 하지만 Java에서는 유니코드로
      char형의 값을 표현하기에 유니코드 문자 한글자당 2byte로 char형 또한 2byte가 된다
      부호없는 정수, 0부터 표현 하는 값 대입
    • short : 2byte, 범위는 -32,768 ~ 32,767
    • int : 4byte, 범위는 -2,147,483,648 ~ 2,147,483,647 (대략 21억정도)
    • long : 8byte, -263 ~ -263-1 엄청 큼......;;

 

3. 기본 입출력 스트림

  • 스트림
    • 먼저 입력된 data가 먼저 출력되는 자료구조
    • 뜻은 흐르는 물이라는 뜻, 단방향으로 수도파이프 구조, FIFO구조라고도 함
    • 지연될 수 있음


  • 바이트 스트림
    • InputStream, OutputStream 클래스와 하위 클래스로 구현
    • 8비트 크기를 갖는 바이트들의 스트림


  • 문자 스트림 
    • 입력되는 모든 data는 문자 이며 숫자로 식별되는 것도 변환시킬뿐 사실은 문자
    • Reader, Writer 클래스와 하위 클래스로 구현
    • 16비트 유니코드 문자들의 스트림


  • System.out : 표준 출력 스트림
  • System.in : 표준 입력 스트림
  • System.out.println() : 출력 후 새로운 라인 생성(엔터)
  • System.out.print() : 괄호안의 해당값 출력
  • System.out.printf() : 서식문자와 전달인자가 포함되어 괄호안의 따옴표내에 서식문자의 값이 출력



문제1) 가로와 세로를 입력 받아 사각형 넓이와 둘레 구하기


문제2) 반지름을 입력 받아 원의 넓이와 둘레 구하기. 단, 반지름은 정수로 입력받고 넓이와 둘레는 실수

 





 

금일 실습 예제





  1. public class Test1{ 
  2.     public static void main(String[] args){
  3.        
  4.         int a,b,c; // 정수형 변수를 선언
  5.         // int a;      int b;  int c; // 따로따로 변수 선언
  6.         // int a=20, b=10, c; // 변수선언과 동시에 초기화
  7.  
  8.         a=10;
  9.         b=20;
  10.         c=a+b;
  11.  
  12.         // System.out : 표준 출력(모니터)
  13.  
  14.         System.out.print("결과 : ");
  15.         System.out.print(c);
  16.         System.out.print(" ");
  17.        
  18.         // System.out.println("결과 : " + c);
  19.         // println : 한줄 출력후 엔터
  20.  
  21.         // 한줄 주석
  22.         /*
  23.            여러줄 주석
  24.            여러줄 주석
  25.            여러줄 주석
  26.         */
  27.     }
  28. }




  1. public class Test2 {
  2.     public static void main(String[] args){
  3.         /*
  4.         byte a=10, b=5, c;
  5.         // byte d=128; // error : overflow(값이 넘침)
  6.         // c=a+b; // error : overflow 미리 감지...?
  7.         c=(byte)(a+b); // (byte) : 형변환, 연산결과를 byte형으로 변환한다.
  8.         // byte형은 산술형(연산)의 용도라기 보다 이럴때 뭐하고 저럴때 뭐하고...
  9.         // 비교하는..blah blah
  10.  
  11.         System.out.println("결과 : "+ c);
  12.         */
  13.        
  14.         /*
  15.         int a=017, b=010; // 0이 붙으면 8진수로 인식 : a=15, b=8
  16.         int c=a+b;
  17.         System.out.println("a : "+a);
  18.         System.out.println("b : "+b);
  19.         System.out.println("결과 : "+c);
  20.         */
  21.  
  22.         /*
  23.         int a=0x17, b=0xa10; // 16진수 : x는 소문자이건 대문자이건 관계 없다
  24.         int c=a+b;       // 초기화 시킬때 많이 쓴다. 0x
  25.         System.out.println("a : "+a);
  26.         System.out.println("b: "+b);
  27.         System.out.println("결과 : "+c);
  28.         */
  29.  
  30.        
  31.         long a=10000000000L, b=10// 100억, 정수의 형태인 21억이상이 되어 L붙여줌
  32.                                     // 소/대문자 관계없다
  33.         long c=a+b;   
  34.         System.out.println("a : "+a);
  35.         System.out.println("b: "+b);
  36.         System.out.println("결과 : "+c);
  37.        
  38.     }
  39.  
  40. }





  1. public class Test3{
  2.     public static void main(String[] args){
  3. /*  float a=0;
  4.     double b=0;
  5.  
  6.     for(int i=1; i<=100000; i++){
  7.         a+=100000;
  8.         b+=100000;
  9.     }
  10.     a=a/100000;
  11.     b=b/100000;
  12.     System.out.println("a: "+a);
  13.     System.out.println("b: "+b);  */
  14.  
  15.     /*// ▽ 반지름이 10인 원의 둘레와 넓이
  16.     int a=10;
  17.     float b,c;
  18.     b=a*a*3.14f; // 3.14는 아무것도 안붙이면 배정도형실수 
  19.     c=a*2*3.14f; // float형 b,c 변수 선언으로 3.14도 단정도형으로 변환위해 f를 붙여줌
  20.     System.out.println("넓이 : "+b);
  21.     System.out.println("둘레 : "+c); */
  22.  
  23.     // 정수 연산자 정수 → 정수
  24.     // 정수 연산자 실수 → 실수
  25.     // 실수 연산자 실수 → 실수
  26.    
  27.     double a=1/2+1/2;
  28.     double b=1./2+1/2; // 1. 은 1.0 실수
  29.     double c=2/3*5+1./2; // 연산우선순위 파악 ①:/* ②:/ ③:①+②
  30.     System.out.println("a: "+a);
  31.     System.out.println("b: "+b);
  32.     System.out.println("c: "+c);
  33.    
  34.  
  35.     }
  36. }





  1. public class Test4{
  2.     public static void main(String[] args){
  3.         char a='a', b='z';
  4.         char c='A', d='Z';
  5.        
  6.         // 아스키코드 (기본암기)
  7.         // a~z: 97 ~ 122
  8.         // A~Z: 65 ~ 90
  9.         // Enter: 13(10), Esc: 27
  10.         // Alt+13(오른쪽키패드)=엔터, Alt+65=A
  11.         // 0: 48
  12.        
  13. /*
  14.         System.out.println(
  15.             a+":"+b+":"+c+":"+d);
  16.  
  17.         a=(char)(a+3); // 형변환(캐스팅)
  18.         System.out.println("a:"+a);
  19.  
  20.         System.out.println((int)a); // 코드값 출력을 위해
  21.         System.out.println((int)b); // int형으로 형변환
  22.         System.out.println((int)c);
  23.         System.out.println((int)d); */
  24. /*
  25.         System.out.print("java");
  26.         System.out.print(" "); // newline, Enter
  27.             // System.out.println("java"); // 위와 같다.
  28.         System.out.print("java "); // 위 두줄과 같다.
  29.  
  30.         System.out.print("java Framework Servlet"); // 는 Tab
  31.         System.out.println(" abcdefgxyz"); // 는 backspace */
  32.  
  33.         // 사용기피 클래스..
  34.         String s1="seoul";
  35.         String s2="korea";
  36.         String s3=s1+s2; // + : 문자열결합
  37.         // 문자열 + 정수 → 문자열
  38.         String s4=s3+40;
  39.         System.out.println(s1+" "+s2+" "+s3+" "+s4);
  40.     }
  41. }





  1. public class Test5
  2. {   public static void main(String[] args){
  3.         /*
  4.         int a=10, b=200;
  5.  
  6.         System.out.println("012345678901234567890123456789");
  7.  
  8.         // System.out.print("서식" + 값);
  9.         System.out.printf("a=%d b=%d%n",a,b); // %n은 printf에서만 사용하며 과 같다
  10.         // System.out.printf("a=%d b=%d ",a,b);
  11.         System.out.printf("%10d%10d%n",a,b); // 자리수 맞출때 쓴다. 일단위 기준
  12.         */
  13.  
  14.  
  15.         // 5page PrintStream클래스의 printf메소드 사용예
  16.         System.out.printf("%d %% %d = %d%n", 10,4,10%4);
  17.         System.out.printf("%10d%n", 123);
  18.         System.out.printf("%010d%n", 123);
  19.        
  20.         System.out.printf("%2$s %1$s %2$s ", "seoul","korea");
  21.         // 1$는 첫번째 값, 2$는 두번째 값
  22.  
  23.         System.out.printf("%1$tF %1$tT %1$tA ", java.util.Calendar.getInstance());
  24.         // 오늘 날짜 시간
  25. }
  26. }





  1. import java.io.IOException; // 예외
  2. public class Test6
  3. {   public static void main(String[] args) throws
  4.     IOException {
  5.         int ch;
  6.         System.out.print("한문자? ");
  7.  
  8.         ch=System.in.read(); // read(): 한문자를 입력받아 ASCII 코드를 반환
  9.  
  10.         System.out.println("ch : "+ch);
  11.         System.out.println("ch : "+(char)ch);
  12. }
  13. }





  1. import java.io.*; // 실무에선 * 절대 안쓴다고 함.. io 안에 있는 클래스 다 가져오란 소리
  2. // 무조건 외우장... 다
  3. public class Test7{
  4.     public static void main(String[] args)throws
  5.     IOException {
  6.         // new : 메모리 할당
  7.  
  8.         String name;
  9.         int kor, eng, tot, ave;
  10.  
  11.         System.out.print("이름?");
  12.         name=br.readLine(); // 엔터치기 전까지 한줄 입력 받는다.
  13.         System.out.print("국어?");
  14.         kor=Integer.parseInt(br.readLine()); // parseInt : 문자열을 숫자로 변환
  15.         System.out.print("영어?");
  16.         eng=Integer.parseInt(br.readLine());
  17.  
  18.         tot=kor+eng;
  19.         ave=tot/2;
  20.         System.out.printf("이름 : %s, 총점 : %d, 평균 : %d", name, tot, ave);
  21.     }
  22.  
  23. }


 




  1. // 문제 - 사칙연산 : +,-,*,/
  2. // 두 수를 입력받아 사칙연산을 하세요.
  3. // 실행 예)
  4. // 첫번째 수? 10
  5. // 두번째 수? 5
  6. // 10+5=15      10-5=5
  7. // 10*5=50      10/5=2
  8.  
  9. /*
  10. import java.io.*;
  11. public class Test8{
  12.     public static void main(String[] args)throws
  13.     IOException {
  14.         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  15.  
  16.        
  17.         int num1, num2, add, mi, gop;
  18.         double na;
  19.  
  20.         System.out.print("첫번째 수? ");
  21.         num1=Integer.parseInt(br.readLine());
  22.         System.out.print("두번째 수? ");
  23.         num2=Integer.parseInt(br.readLine());
  24.        
  25.  
  26.         add=num1+num2;
  27.         mi=num1-num2;
  28.         gop=num1*num2;
  29.         na=(double)num1/(double)num2; // 실수로 형변환
  30.        
  31.  
  32.         System.out.printf("%d + %d = %d ", num1, num2, add);
  33.         System.out.printf("%d - %d = %d ", num1, num2, mi);
  34.         System.out.printf("%d * %d = %d ", num1, num2, gop);
  35.         System.out.printf("%d / %d = %.1f ", num1, num2, na); // 값이 실수이므로 %f
  36.     }
  37. } */
  38.  
  39. import java.io.*;
  40. public class Test8
  41. {   public static void main(String[] args)throws
  42.     IOException {
  43.  
  44.         int a, b;
  45.  
  46.         System.out.print("첫번째수? ");
  47.         a=Integer.parseInt(br.readLine()); // 여기서 멈추는이유는 br.readLine()
  48.         System.out.print("두번째수? ");
  49.         b=Integer.parseInt(br.readLine());
  50.  
  51.         System.out.printf("%d+%d=%d ", a,b,(a+b));
  52.         System.out.printf("%d-%d=%d ", a,b,(a-b));
  53.         System.out.printf("%d*%d=%d ", a,b,(a*b));
  54.         System.out.printf("%d/%d=%d ", a,b,(a/b));
  55.         // System.out.printf("%d/%d=%f ", a,b,(double)a/b);
  56.         // 값이 실수로 나오게 하고 싶다면 △
  57.     }
  58. }




※ 종일 궁금했던 parseInt에 관한 확실한 정의(? 구글링)




....해보라고-_-

외워야 할 것들 ↗

'Java' 카테고리의 다른 글

Java_06  (0) 2011.10.31
Java_05  (0) 2011.10.29
Java_04  (0) 2011.10.27
Java_03  (0) 2011.10.26
Java_02  (0) 2011.10.25
Java_01  (0) 2011.10.24
Html,Jsp,Css_08 Html/Jsp/Javascript 2011. 10. 19. 19:43

*  String객체의 글꼴관련메소드

<html>
 <head>
  <title> String객체의 글꼴관련메소드 </title>
 </head> <!--컴퓨터에서 문자는 String 글자 한글자는 Character-->
   <!--Java에도 아래의 메소드와 동일한것이 대부분이라 함-->
<body>
  <script>
//  d="감자" : 문자를 d에 대입
//  document.write(d.length); // 문자열의 길이 표시
// 메소드: () 괄호가 있는것 

//* 글꼴 관련 메소드 → document.write(d.charAt(2)) 문자열(또는 대입된 변수).메소드()
// 자바스크립트에서도 html태그를 적용하지 않고도 글자의 속성을 변경이 가능하다
 
  str = "Java Web Programming"

// big() : 글자를 크게
  document.write(str+" = "+str.big()+" : big()<br>");
 
// bold() : 진하게
 document.write(str+" = "+str.bold()+" : bold()<br>");
 
// fontcolor() : 글자색 - RGB코드나 색상명을 따옴표''안에 표기
 document.write(str+" = "+str.fontcolor('red')+" : fontcolor(red)<br>");
 
// fontsize() : 글자크기 - 0~7까지
 document.write(str+" = "+str.fontsize(0)+" : fontsize(0)<br>");
 
// italics() : 기울임꼴
 document.write(str+" = "+str.italics()+" : italics()<br>");
 
// small() : 작게
 document.write(str+" = "+str.small()+" : small()<br>");
 
// strike() : 취소선
 document.write(str+" = "+str.strike()+" : strike()<br>");

 // sub() : 아래첨자
 document.write(str+" = "+str.sub()+" : sub()<br>");
 
// sup() : 위첨자
 document.write(str+" = "+str.sup()+" : sup()<br>");
 
 // 그룹화: 글자색(파랑), 글자크기(5)
 // d.w(변수.속성명('속성값').속성명('속성값'));
 document.write(str.fontcolor('blue').fontsize('5')+"<br>");

 // 링크걸기
 document.write('script:<a href="http://www.daum.net" target="_blank">Next</a><br>');
 
// 지정된 변수에 링크걸기
 document.write('변수link:'+str.link("http://www.daum.net")+"<br>");

 //* 문자열처리 메소드
 // charAt(i) : 인덱스(i=0,1,2....)위치의 한문자를 구한다.
 document.write(str.charAt(5)+'  :  charAt(5)<br>');

 // charCodeAt(i) : index위치의 한문자에 해당하는 아스키코드를 구한다.
 document.write(str.charCodeAt(5)+'  :  charCodeAt(5)<br>');
 
// concat() : 문자열 연결
 document.write(str.concat(" DDDDD")+'  :  concat(" DDDDD")<br>');
 
// indexOf(s) : 문자의 위치구하기 - 같은 문자라면 앞에있는 문자
 document.write(str.indexOf('a')+'  :  IndexOf("a")<br>');

 // lastIndexOf(s) : 문자의 마지막 위치구하기 - 같은 문자라면 뒤에 있는 문자
 // 중간에 있는 문자열 구하는 것은? 스크립트엔 없지만 자바에는 있다고 함

 document.write(str.lastIndexOf('a')+'  :  lastIndexOf("a")<br>');
 
// split() : 문자열 나누기 - 해당 문자열은 사라지며 ,로 구분
 document.write(str.split(" ")+'  :  split(" ")<br>');
 
// substring() : 특정위치의 문자열 구하기
 document.write(str.substring(4)+'  :  substring(4)<br>');
 
// toLowerCase() : 소문자로 변경
 document.write(str.toLowerCase()+'  :  toLowerCase()<br>');
 
// toUpperCase() : 대문자로 변경
 document.write(str.toUpperCase()+'  :  toUpperCase()<br>');
 
</script>
 </body>
</html>

# 결과

Java Web Programming = Java Web Programming : big()
Java Web Programming = Java Web Programming : bold()
Java Web Programming = Java Web Programming : fontcolor(red)
Java Web Programming = Java Web Programming : fontsize(0)
Java Web Programming = Java Web Programming : italics()
Java Web Programming = Java Web Programming : small()
Java Web Programming = Java Web Programming : strike()
Java Web Programming = Java Web Programming : sub()
Java Web Programming = Java Web Programming : sup()
Java Web Programming
script:Next
변수link:Java Web Programming
W  :  charAt(5)
87  :  charCodeAt(5)
Java Web Programming DDDDD  :  concat(" DDDDD")
1  :  IndexOf("a")
14  :  lastIndexOf("a")
Java,Web,Programming  :  split(" ")
Web Programming  :  substring(4)
java web programming  :  toLowerCase()
JAVA WEB PROGRAMMING  :  toUpperCase()


* Math 객체

<html>
 <head>
  <title> Math객체 </title>
 </head>
 <body>
 <script>  // d.w(클래스명.메소드(변수));
 num = 10.5

 // round() : 반올림
 document.write(Math.round(num)+" : round()<br>");

 // floor() : 버림
 document.write(Math.floor(num)+" : floor()<br>");

 // ceil() : 올림
 document.write(Math.ceil(num)+" : ceil()<br>");

 // max(), min() : 큰값, 작은값 구하기
 document.write(Math.max(300,350)+" : max(300,350)<br>");
 document.write(Math.min(300,350)+" : min(300,350)<br>");
 
// pow() : 지수 - 프로그래밍에서는 지수의 연산자가 없어 아래와 같이
// pow() 메소드를 이용해야 한다 
 document.write(Math.pow(3,2)+" : pow(3,2)→3²을 의미한다<br>"); 

 // sqrt() : 제곱근
 document.write(Math.sqrt(10)+" : sqrt(10)<br>");
 
// random() : 난수 - 실수로 표현할 수 있는 0이 아닌 최소의값
// 0.00000..1 ~ 0.99999..9
 for (i=1; i<=10; i++)
 {
 document.write(Math.random()+" : random()<br>");
 }
// 랜덤값이어도 범위 설정이 가능하다
 // 설정방법 :  floor(난수*(큰수-작은수+1))+작은수
 
 bb=0;
 for (i=1; i<10; i++)
 {
 a = Math.floor(Math.random()*(45-1+1))+1;
 document.write(a+'<br>');
// ▽ 범위를 벗어난 값이 있다면 에러표시
 if(a>45 || a<1){bb=bb+1}
 }
 if (bb>0)
 {document.write("Error!!!!")
 }

 </script> 
 </body>
</html>

# 결과

11 : round()
10 : floor()
11 : ceil()
350 : max(300,350)
300 : min(300,350)
9 : pow(3,2)→3²
3.1622776601683795 : sqrt(10)
0.435694593824094 : random()
0.23957019408375624 : random()
0.6215856861777931 : random()
0.3003168975865115 : random()
0.11009055717526667 : random()
0.8536929841696323 : random()
0.1820287439428912 : random()
0.3908089953177582 : random()
0.8486993927286865 : random()
0.5091668366954141 : random()
37
9
10
38
26
22
28
16
22


* random() 을 이용하여 사이트 접속시마다 다른 이미지 보이기

<body>
 <script>
 ran = Math.floor(Math.random()*(8-1+1))+1; //1~8사이의 값 설정
 switch (ran)
 {
 case 1:img="car_b_01.jpg";break;
 case 2:img="car_b_02.jpg";break;
 case 3:img="car_b_03.jpg";break;
 case 4:img="car_b_04.jpg";break;
 case 5:img="car_b_05.jpg";break;
 case 6:img="car_b_06.jpg";break;
 case 7:img="car_b_07.jpg";break;
 case 8:img="car_b_08.jpg";break; 
 }
 document.write("<img src=car/"+img+">");
 </script>
</body>


* Array객체-배열

<html>
 <head>
  <title> Array객체(배열) </title>
 </head>

 <body>
 <script>
 // 배열선언
 arr = new Array(5)
 arr[0] = "홍길동"
 arr[1] = 100
 arr[2] = "김길동"
 arr[3] = 200

 document.write(arr+" : arr");
 document.write("<hr>");
 // strArr[2] : 3번째 값을 출력하라
 str = "임소연,이태석,엄기백,1,2,3";
 strArr = str.split(','); // strArr도 배열
// split(기준값) : 문자열 나누기
 document.write(strArr[2]+' : strArr[2]<br>');

 for (i=0; i<strArr.length; i++) // 배열의 길이보다 작을때까지 반복 
 {
  document.write(strArr[i]+' : strArr[i]<br>');
 }

 // 두 배열을 하나의 배열로 합친다.
 // concat()
 arrConcat = arr.concat(strArr); //arr과 strArr을 연결해라, arrConcat도 배열
// 순서가 바뀌어도 관계 없음 = strArr.concat(arr)
 document.write("<hr>"+arrConcat+' : arrConcat');

 // 배열의 문자를 하나의 문자열로 변경
 // join() : 괄호안에지정된 것으로 구분하여 하나로 묶음
 strJoin = arrConcat.join(", ");
 document.write("<hr>");
 document.write(strJoin+' : strJoin');

 // 배열의 값을 역순으로 정렬 : 역순으로 정렬된 값이 완전히 변수에 저장이 되어버린다.
 // 값을 되돌리려면 reverse()를 한번 더 실행해줘야 한다.
 // reverse()
 strReverse = arrConcat.reverse()
 document.write("<hr>");
 document.write(strReverse+' : strReverse');

 // 배열의 일부만 구한다.
 // slice()
 strSlice = arrConcat.slice(2,5)
// 배열 값의 3번째부터 6번째까지
 document.write("<hr>");
 document.write(strSlice+' : strSlice')

 // 배열의 정렬 : 데이터를 크기 순서대로 정렬 오름차순 (문자기준)
 // sort()
 strSort = arrConcat.sort();
 document.write("<hr>"+strSort+' : strSort')
 
 </script>
 </body>
</html>

# 결과



* 로또 게임기 만들기

 <body>
  <script>

cnt = prompt("몇번할래?","")
document.write("게임수="+cnt+"<br>");
for (i=1; i<=cnt; i++) // 게임수만큼 반복
{   // 난수를 저장할 배열 생성
 ranArr = new Array(6);
 for(j=0; j<ranArr.length; j++){ // 0,1,2,3,4,5

 // 난수생성, 난수를 배열에 대입
 ran = Math.floor(Math.random()*(45-1+1)+1); // 1~45사이의 값
 
 // 난수 같은 값 제외하는 방법
 sw=0;
 for (k=0; k<j; k++)
 {
  if (ranArr[k]==ran)
  {
   j--; sw=1;
   break;
  }
 }
 // 난수 6개의 값 저장 : ranArr[0]~[5]
 if(sw==0)ranArr[j] = ran;
 }
 // 정렬 : sort()가 숫자를 문자를 비교하듯 12, 1 중 1이 크다고 비교해서
 // 이 스크립트에 사용하기 부적절 하여 버블정렬(?) 방법을 써 sort()명령어의
 // 역할을 하는 스크립트를 작성한다
 for(z=0; z<ranArr.length-1; z++){
  for (p=0; p<ranArr.length-1; p++)
  {
   if (ranArr[p]>ranArr[p+1]) // 배열 비교
   { temp = ranArr[p];
    ranArr[p] = ranArr[p+1];
    ranArr[p+1] = temp;
   }
  }
 }
 // 출력
 document.write(i+"게임="+ranArr+"<br>");
}

  </script>
 </body>

# 결과

 



* 이미지 스크롤 :
marquee영역에 마우스 롤오버시 멈추고 영역 벗어날시 다시 움직임

<body>
<marquee bgcolor="#e3e3e3" onMouseOver="this.scrollAmount=0"
onMouseOut="this.scrollAmount=10"> // 현재 페이지를 가르키므로 this
<a href="#"><img src="car/car_a_01.jpg" border="0"></a>
<a href="#"><img src="car/car_a_02.jpg" border="0"></a>
<a href="#"><img src="car/car_a_03.jpg" border="0"></a>
<a href="#"><img src="car/car_a_04.jpg" border="0"></a>
<a href="#"><img src="car/car_a_05.jpg" border="0"></a>
<a href="#"><img src="car/car_a_06.jpg" border="0"></a>
<a href="#"><img src="car/car_a_07.jpg" border="0"></a>
<a href="#"><img src="car/car_a_08.jpg" border="0"></a>
</marquee>
 </body>

# 결과




* window 객체
버튼을 생성하여 팝업창 컨트롤 하기

 <head>
  <title> Window 객체 </title>
 <script>
// 페이지 로드시 팝업창을 자동으로 띄운다. win변수에 지정하여 함수에서도 활용
  win = window.open("이미지스크롤.html","w","width=300,height=300");
 
  function Move(x,y){
 win.moveBy(x,y); // x축과 y축의 픽셀값 입력으로 팝업창의 위치 이동
  }

  function Size(w,h){
  // 창의 크기 조절 w,h
 win.resizeBy(w,h); // 너비와 높이의 픽셀값 입력으로 팝업창의 크기 조절
  }

  cnt=0
  function autoResize(){ // 페이지 로드시 작동
 win.resizeBy(1,1);
 if(cnt<500){ // 너비,높이를 1픽셀씩 500번 늘림: 500px씩 늘림
 cnt++;
 setTimeout("autoResize()",1); // 밀리초(1초=1000밀리초)만큼 대기 후 실행: 반복
// setTimeout("함수명",밀리초) : 해당 함수의 실행에 대기시간 부여
 }
  }
// 테스트 해보니 간단하게 for문으로도 같은(?) 구현이 가능하다.
// for(i=0; i<300; i++){win.resizeBy(1,1)}
  cnt=0;
  cnt2=0;
  function autoMove(){ // 페이지 로드시 작동
 win.moveBy(-1,0); // 왼쪽 1pixel 이동
 win.moveBy(0,1); // 아래쪽 1pixel 이동
 if(cnt<1000){ // 왼쪽 밑으로 대각선 방향으로 1000번 움직인다
 cnt++;
 setTimeout("autoMove()",1); // 1/1000 초 동안 대기 후 실행:반복
 }
 
  }
 </script>
 </head>

 <body onLoad="autoResize(),autoMove()"> 
// 페이지 로드시 작동되는 함수 body태그에 삽입
 <br><br><br><br>
 <center>
 <input type="button" value="위로" onClick="Move(0,-20)"><br>
 <input type="button" value="왼쪽" onClick="Move(-20,0)">
 <input type="button" value="오른쪽" onClick="Move(20,0)"><br>
 <input type="button" value="아래" onClick="Move(0,20)"><br>
 <input type="button" value="늘리기" onClick="Size(50,50)">
 <input type="button" value="줄이기" onClick="Size(-50,-50)"><br>
</center>
 
</body>

# 결과



* 백그라운드 스크롤

<head>
  <title> 백그라운드 스크롤 </title>
  <script>
  bgSet = 0; 
  bgImg = eval('document.body')
  // eval:문자열의 속성이 가지고 있는 값으로 자동으로 형 변환 (일전에 기술했었음)
  function bg_scroll(max){
 bgSet+=1; // 계속 증가하므로 ↘
 if(bgSet > max) bgSet=0; // 임의로 초기셋팅값으로 되돌림
 document.body.style.backgroundPosition = bgSet+"  "+bgSet //포지션에서 y값이 계속 바뀜
  }
  window.setInterval("bg_scroll(9000)",50); // 50밀리초동안 대기 후 "함수"을 실행
 
  </script>
 </head>

 <body background="../html/img/1.jpg">
  <br><br><br><br><br><br>
  <center>
  <img src="../html/img/xbox.gif">
  </center>
 </body>

# 결과


'Html/Jsp/Javascript' 카테고리의 다른 글

Html,Jsp,Css_10  (2) 2011.10.21
Html,Jsp,Css_09  (0) 2011.10.20
Html,Jsp,Css_08  (0) 2011.10.19
Html,Jsp,Css_07  (0) 2011.10.18
[Test] for문과 테이블을 이용한 구구단 출력하기 & while문으로도 해보기  (0) 2011.10.17
Html,Jsp,Css_06  (0) 2011.10.17