1. List 

- java.util 패키지에 존재

- 일차원 배열처럼 생성됨

- 값은 중복되며, 검색의 기능이 있음

- 객체를 저장하므로 기본형 데이터형을 저장할 수 없음.

   > 기본형 데이터형은 Wrapper class를 사용하여 객체로 만든 후 저장됨 (=autoboxing)

 

- List사용법) List list = new ArryList();  // is a 관계 객체화

   > JDK1.4까지 : 모든 객체를 저장할 수 있음

                     : 장점) 편의성-모든 값을 저장할 수 있음 / 단점) 값을 꺼내 사용할 때 문제

   > JDK1.5이후 : 특정 객체만 저장할 수 있음 (<E> : Generic)

1) 생성 : ArrayList al = new ArrayList();

2) 값 추가 : 모든 객체를 다 할당할 수 있음

                //값을 추가할 때마다 Element가 증가함

                  al.add(“안녕”); , al.add(new Integer(10));, al.add(new 클래스명(매개변수))

 

 2. Generic 

- JDK1.5에서부터 추가된 기능

- JCF(Java Collection Framework)의 입력 데이터형 제한

- Generic이 사용된 JCF는 설정된 데이터형만 입력가능해짐 (모든 데이터형>특정 데이터형 입력)

- <E>는 Element의 약자, List의 방 데이터형을 설정하는 것으로 하나만 입력 가능

- 기본형 => Wrapper Class 사용

- 사용법) List<E> list = new ArrayList<E> ();

             Ex. 문자열만 저장가능한 List 생성 : List<String> list = new ArrayList<String>();

                  기본형은 Wrapper Class 사용 : List<Integer> list = new ArrayList<Integer>();

                   VO => 방 하나에 여러 개의 값 저장 시 : List<VO> List = new ArrayList<VO>();


# 오늘의 코딩 #

ArrayList를 활용해보자! (중복값 가능, 검색 기능 있음)

package test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

/**
 * ArrayList 활용 Class
 * @author user
 */
public class UseArrayList {
	/**
	 * 10~20 사이의 난수를 발생시켜, 이름 배열의 임의의 방 값을 얻어 List넣고 반환하는 method<br>
	 * @return 발생된 난수 횟수만큼 임의의 값이 저장된 list
	 */
	public List<String> randomName() {
		List<String> list = new ArrayList<String>();
       
		String[] data = "셔누,형원,주헌,민혁,기현,창균,동동".split(",");
		
		Random random = new Random();
		int num = (random.nextInt(11) + 10); // 10~20까지의 난수 발생

		for (int i = 0; i < num; i++) { // 난수 횟수만큼 list에 값 할당하는 for
			list.add(data[random.nextInt(data.length)]); // 할당되는 값도 random
		} // end for

		return list;
	} // randomName

	/**
	 * randomName method에서 반환된 list를 개선된 for로 출력하는 method
	 */
	public void printRandomName() {
		List<String> nameList = randomName(); // 위 method에서 반환된 list를 nameList에 할당
		
		System.out.println("추출횟수 : " + nameList.size()+"회");
		for (String val : nameList) {
			System.out.print(val + " ");
		} // end for
	}// printRandomName
	
	public static void main(String[] args) {
    
		UseArrayList ul = new UseArrayList();
		ul.printRandomName();

	}// main
}// class

 

 

# 출력 결과 #

추출횟수 : 12회
동동 셔누 동동 형원 동동 기현 민혁 창균 창균 창균 주헌 기현

 

 

'Development > Java' 카테고리의 다른 글

[Java] Stack / autoboxing / unboxing  (0) 2021.08.12
[Java] JCF - Set, Map  (0) 2021.08.11
[Java] JCF - List, Set, Map  (0) 2021.08.09
[Java] DecimalFormat Class  (0) 2021.08.06
[Java] import / static import  (0) 2021.08.05

  JCF  

- 데이터 구조(DataStructure)를 미리 구현해놓은 클래스들

- 데이터를 처리하기 위해서 구성 및 동작해야 할 메모리의 형태

- List, Set, Map이 java.util.package에서 제공됨

  (List, Set – Collection 계열 / Map – Map 계열)

- JDK 1.5이상에서부터는 Generic, autoboxing, unboxing이 사용됨

- 가변길이형 (값이 추가되면 길이가 늘어나고, 값이 삭제되면 길이가 줄어듦)

 

 1. List 

- 일차원 배열처럼 생성됨

- 값은 순차적으로 입력되고, 중복 값을 저장할 수 있으며, 검색의 기능이 있음

- 구현클래스로 ArrayList, Vector, LinkedList 등 제공

 

 2. Set 

- 일차원 배열처럼 생성됨

- 값은 비순차적으로 입력되고, 중복 값을 저장할 수 없으며, 검색의 기능이 없음

- 구현클래스로 HashSet 제공

 

 3. Map 

- 이차원 배열처럼 생성됨 (행과 열로 구성)

- 키와 값의 쌍(=entry)으로 구성됨

- entry는 비순차적으로 입력됨

- 키는 중복될 수 없고 (=유일), 값은 중복 가능

- 키를 사용하여 값을 검색함

- 구현클래스로 Hashtable, HashMap 제공

 

'Development > Java' 카테고리의 다른 글

[Java] JCF - Set, Map  (0) 2021.08.11
[Java] JCF - List / Generic  (0) 2021.08.10
[Java] DecimalFormat Class  (0) 2021.08.06
[Java] import / static import  (0) 2021.08.05
[Java] Calendar Class(2)  (0) 2021.08.03

 DecimalFormat Class 

- 숫자형식을 변환할 때 (정수, 실수 모두 가능)

- java.text package에서 제공하는 Class

 

- 사용법)

> 생성) DecimalFormat df = new DecimalFormat(“pattern”);

           - pattern : 0 : 해당 자리에 값이 없으면 0을 넣어서 보여줌 // 전체 자릿수를 맞출 때

                         # : 데이터가 존재하는 것까지만 보여줌

> 값 얻기) String str = df.format(값);

          Ex. DecimalFormat df = new DecimalFormat(“0,000,000”); // 0

               df.format(2021); => 뒷자리부터 채워져서 0,002,021됨!

          Ex. DecimalFormat df = new DecimalFormat(“#,###,###”); //#

               df.format(2021); => 2,021

               DecimalFormat df = new DecimalFormat(“#,###”); // # 다 쓸필요 없음

               df.format(2021111); => 2,021,111 // 규칙을 가지고 ,가 들어감!!

          Ex. DecimalFormat df = new DecimalFormat(“#,###.##”); // ,와 . 혼용 가능

               df.format(2021.989); => 2,021.99

          => 설정한 다음 자리가 반올림 대상이면 반올림 된다

 

 


# 오늘의 코딩 #

package test;

import java.text.DecimalFormat;

/**
 * 숫자형식을 변경할 때 사용하는 DecimalFormat Class
 * @author user
 */
public class UseDecimalFormat {

	public UseDecimalFormat() {

		// 1.생성
		DecimalFormat df = new DecimalFormat("0,000,000"); // 데이터가 모자라면 0을 채워서 보여줌
		// 2. 일
		String value = df.format(2021);
		System.out.println(value);

		// 1.생성
		DecimalFormat df2 = new DecimalFormat("#,###,###"); // 데이터가 존재하는 곳 까지만 보여줌
		// 2. 일
		String value2 = df2.format(2021);
		System.out.println(value2);

		// 1.생성
		DecimalFormat df3 = new DecimalFormat("#,###.###"); // 실수도 가능
		// 2. 일
		String value3 = df3.format(2021.9998); // 실수 부분은 설정한 다음 자리가 반올림 대상이라면 반올림하여 보여줌
		System.out.println(value3);

		// 1.생성
		DecimalFormat df4 = new DecimalFormat("#,###"); // 규칙을 가지고 ,가 들어간다
		// 2. 일
		String value4 = df4.format(20200000);
		System.out.println(value4);

	}// UseDecimalFormat

	public static void main(String[] args) {

		new UseDecimalFormat();

	}// main

}// class

- DecimalFormat Class는 실수 사용시 반올림된다는 것을 주의하자!

 

# 출력 결과 #

0,002,021
2,021
2,022
20,200,000

 

 

'Development > Java' 카테고리의 다른 글

[Java] JCF - List / Generic  (0) 2021.08.10
[Java] JCF - List, Set, Map  (0) 2021.08.09
[Java] import / static import  (0) 2021.08.05
[Java] Calendar Class(2)  (0) 2021.08.03
[Java] Calendar Class / VO Class  (0) 2021.08.02

1. import

- 클래스가 존재하는 패키지 외부에 다른 클래스를 사용할 때

- package선언과 class 선언 사이에 필요한 만큼 정의하여 사용

- JDK1.5에서부터는 static import 추가

- java.lang 패키지에 포함되어 있는 class는 따로 import가 필요 없음

 

- 주의!) 패키지가 다르나 같은 이름의 클래스, 인터페이스가 존재한다면 두 클래스 중 하나만 import 받을 수 있음

   => full path로 해결 가능

        - 클래스를 사용할 때 패키지를 기술하여 사용하는 것

        - 문법) 패키지명.클래스명 객체명 =

        - Ex)  Date d = null; // java.util package의 Date (얜 import한 Date)

                java.sql.Date d1 = null; // java.sql package의 Date도 사용할 때(full path 사용)

 

- 문법)

import 패키지명.*; => 다른 패키지내의 모든 클래스를 사용할 때 (Java에서는 권장하지 않음)

import 패키지명.클래스명; => 다른 패키지내의 특정 클래스만 사용할 때

 

2. static import

- 다른 클래스에 존재하는 Constant나 static method를 클래스에 존재하는 것처럼 사용할 때

- 기본 import에서 더 확장된(들어간) 개념

- import 안 해도 됐던 java.lang 패키지도 static import 사용하려면 선언이 필요함!

 

- 주의! 패키지가 다르나 같은 이름의  Constant나 static method가 존재한다면 하나만 import 받을 수 있음

 

- 문법)

1) Constant 사용할 때 : import static 패키지명.클래스명.상수명;

2) static method 사용할 때 : import static 패키지명.클래스명.method

                                     (주의! method 기호()를 기술하지 않음) 

 

 


# 오늘의 코딩 #

- static import를 사용해보자

package test;

import static java.lang.Integer.MAX_VALUE;
import static java.lang.Integer.parseInt;
import static java.lang.Math.random;
//import static java.lnag.Byte.MAX_VALUE; // 같은 이름의 Constant는 하나만 받을 수 있음

/**
 * 다른 클래스의 상수나 static method를 내 클래스에 존재하는 것처럼 사용할 때
 * 
 * @author user
 */
public class TestStaticImport {

	public static void main(String[] args) {
		//Interger의 Constant와 method 내 것처럼 사용
		System.out.println(MAX_VALUE);
		
		String s = "7";
		String s1 = "28";
		int i = parseInt(s);
		int j = parseInt(s1);
		System.out.println(i + "/" + j);

		// random()을 내 클래스에 존재하는 것처럼 사용
		System.out.println((int) (random() * 100 + 1));

	}// main
}// class

 

# 출력 결과 #

2147483647
7/28
98

 

 

 

'Development > Java' 카테고리의 다른 글

[Java] JCF - List, Set, Map  (0) 2021.08.09
[Java] DecimalFormat Class  (0) 2021.08.06
[Java] Calendar Class(2)  (0) 2021.08.03
[Java] Calendar Class / VO Class  (0) 2021.08.02
[Java] Date Class / SimpleDateFormat Class / Locale Class  (0) 2021.08.01

# 오늘의 코딩 #

Calendar Class 를 사용하여 달력을 만들어보자!

- 1일에 해당하는 요일부터 달력시작

- 토요일이면 줄 변경하기

- 연, 월을 설정할 수 있게 작성

 

package test;

import java.util.Calendar;

/**
 * 달력 만들기<br>
 * @author user
 */
public class MyCalendar {

	public MyCalendar() {

		Calendar cal = Calendar.getInstance(); // 객체 생성
		cal.set(Calendar.YEAR, 2021); // 년도 setting
		cal.set(Calendar.MONTH, 9); // 월 setting. 실제 월 - 1

		System.out.println(cal.get(Calendar.YEAR) + "년 " + (cal.get(Calendar.MONTH) + 1) + "월");

		System.out.println("------------------------------------------------------");
		System.out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "일", "월", "화", "수", "목", "금", "토");
		System.out.println("------------------------------------------------------");

		for (int tempDay = 1; tempDay < 32; tempDay++) { // 최대 31일까지
			cal.set(Calendar.DAY_OF_MONTH, tempDay); // 임시일자로 달력객체 설정

			if (tempDay == 1) {// 1일 출력 전 만들어야 하는 공백의 수
				for (int blank = 1; blank < cal.get(Calendar.DAY_OF_WEEK); blank++) // 1일의 요일을 가져와서 그 수 만큼 공백 생성
					System.out.print("\t");
			} // end if

			if (cal.get(Calendar.DAY_OF_MONTH) != tempDay) { // 달의 말일보다 큰 값으로 날짜가 설정되면 자동으로 다음달 날짜가 되는 것을 검증
				break; // 그 달의 말일과 tempDay가 다르면 break
			} // end if

			System.out.printf("%-3d\t", cal.get(Calendar.DAY_OF_MONTH)); // 일자 출력

			switch (cal.get(Calendar.DAY_OF_WEEK)) {
			case Calendar.SATURDAY:
				System.out.println();// 토요일이면 줄변경
			}// end switch

		} // end for

	}// MyCalendar

	public static void main(String[] args) {

		new MyCalendar();

	}// main

}// class

 

# 출력 결과 #

 

>> 말일이랑 요일때문에 좀 헷갈렸지만 성공 :)))) 

'Development > Java' 카테고리의 다른 글

[Java] DecimalFormat Class  (0) 2021.08.06
[Java] import / static import  (0) 2021.08.05
[Java] Calendar Class / VO Class  (0) 2021.08.02
[Java] Date Class / SimpleDateFormat Class / Locale Class  (0) 2021.08.01
[Java] StringTokenizer  (0) 2021.07.30

1. Calendar Class 

- 하나의 날짜 정보를 얻을 때 (Ex. 년도, 시간, 분 등 ..)

  (형식있는 날짜를 Calendar로 구하면 문장이 길어짐! 형식있는 날짜는 Date/SimpleDateFormat으로 구하자)

- java.util package에서 제공

- abstract class이므로 객체화가 되지 않음 (자식 클래스가 객체화되면 객체로 생성됨)

   => 자식클래스 : GregorianCalendar

 

- 생성: 1) 자식 클래스를 통해 생성 (is a 관계의 객체화)

             Calendar cal = new GregorianCalendar();

          2) method를 이용한 생성 (권장)

             : Calendar의 instance를 얻는 method를 사용하여 객체를 얻을 수 있음

               Calendar cal1 = Calendar.getInstance();

 

- 일: 1) 정보를 얻을 때에는 Calendar.get method의 Calendar.Constant를 넣어서 얻음

     - 년 구하기 : int year = cal.get(Calendar.YEAR);

     - 월 구하기 :              = cal.get(Calendar.MONTH)+1; // 월은 0~11월. 12달이 나옴.

     - 일 구하기 :              = cal.get(Calendar.DAY_OF_MONTH); // DAY_OF_YEAR은 년기준 day

     - 요일 구하기 :          = cal.get(Calendar.DAY_OF_WEEK) // 일~토 (1~7)

     - 시간 구하기 : HOUR (12시간) / HOUR_OF_DAY (24시간)

     - 분 구하기 : MINUTE

     - 초 구하기 : SECOND

 

**String의 split method 사용하면 용이함!**

- 기준 문자열로 구분하여 배열로 만들어 반환하는 일

- 문법) String[] 배열명 = "문자열".split(“구분문자열”)

    Ex.) String[] week = "일요일,월요일,화요일,수요일,목요일,금요일,토요일".split(","); //,를 구분문자열로 배열 생성

 

**Calendar에서 다른 날짜 정보 얻기!**

- Calendar가 생성되면 생성된 시점의 현재 날짜가 할당

- set method를 활용하자 !  : cal.set(int field, int value)

                                     > field : 변경하고 싶은 날짜 정보 상수

                                     > value : 값

  주의) 현재 월에 존재하지 않는 일이 설정되면 자동으로 다음달 1일 + 초과일수로 변경 됨

 

2. VO (Value Object) Class

- 값을 저장하고 전달할 목적으로 만드는 Class

- 인스턴스 변수/기본 생성자/인자 있는 생성자/getter와 setter method가 존재하는 클래스

  (프레임웍 사용하면 getter/setter method만 넣게 됨)

- method의 매개변수가 여러개일 때 클래스로 묶어서 처리하는 방법


# 오늘의 코딩 #

-VO Class와 Calendar Class를 활용해보자

 

#먼저 VO Class 작성 (년,월,일을 저장하는 Class)

package test;

/**
 * VO (Value Object) : 값을 저장하고 전달할 목적으로 만드는 클래스
 * @author user
 */
public class CalendarVO {

	private int year, month, day;

	public CalendarVO {
	
	}//CalendarVO

	public CalendarVO(int year, int month, int day) { // 매개변수를 입력받는 생성자
		this.year = year;
		this.month = month;
		this.day = day;
	}//CalendarVO

	public int getYear() {
		return year;
	}

	public void setYear(int year) {
		this.year = year;
	}

	public int getMonth() {
		return month;
	}

	public void setMonth(int month) {
		this.month = month;
	}

	public int getDay() {
		return day;
	}

	public void setDay(int day) {
		this.day = day;
	}

}// class

 

# Calendar Class에서 VO Class를 매개변수로 받아보았다

package test;

import java.util.Calendar;

/**
 * Calnedar Class와 VO Class 활용<br>
 * @author user
 */
public class UseCalendar {

	/**
	 * "년월일"을 정수로 가진 클래스를 매개변수로 받아 요일을 반환하는 method<br>
	 * @param calendarVO 년,월,일을 묶어서 관리하는 클래스
	 * @return 요일
	 */
	public String weekTitle(CalendarVO calendarVO) {
		String resultWeek = "";

		Calendar cal = Calendar.getInstance(); // 현재 날짜
		// 입력한 값으로 변환된 날짜
		cal.set(Calendar.YEAR, calendarVO.getYear());
		cal.set(Calendar.MONTH, calendarVO.getMonth() - 1); // 사람이 사용하는 월보다 1 적게 설정
		cal.set(Calendar.DAY_OF_MONTH, calendarVO.getDay());

		resultWeek = "일,월,화,수,목,금,토".split(",")[cal.get(Calendar.DAY_OF_WEEK) - 1];
		return resultWeek;
	}// weekTitle

	public static void main(String[] args) {

		UseCalendar week = new UseCalendar();
		System.out.println(week.weekTitle(new CalendarVO(2021, 8, 31)));
		
	}// main
}// class

- String 배열을 생성하여 하나씩 값을 넣는것보다 String.split을 이용한다면 수고로움을 덜 수 있다!

 

# 출력 결과 #

 

 

 

 

 

'Development > Java' 카테고리의 다른 글

[Java] import / static import  (0) 2021.08.05
[Java] Calendar Class(2)  (0) 2021.08.03
[Java] Date Class / SimpleDateFormat Class / Locale Class  (0) 2021.08.01
[Java] StringTokenizer  (0) 2021.07.30
[Java] Math Class  (0) 2021.07.29

1. Date Class

- SimpleDateFormat클래스와 함께 형식이 있는 날짜를 사용할 때

- java.util package에서 제공

- 비추천 method가 많음..

 

- 사용법)

  1. 생성 : Date date = new Date();

              Date date1 = new Date(System.currentTimeMillis());

              >> Java에서 유일하게 시간정보를 가진 클래스 : System

              >> System.currentTimeMillis() : 1970년01월01일00시00분00초부터 현재까지 ms로 얻어냄

     * 이 객체를 출력하면 시간이 나온다. 주소가 아닌 값이 나온 이유는!

        Date Class에서 Object의 toString()을 Override했기 때문.

 

2. SimpleDateFormat

 - format 클래스 => 형식을 설정하는 일

 - java.text package에서 제공

 - format은 pattern이 모인 것, pattern은 letter가 모인 것 (letter를 조합해서 pattern만들자)

    (Ex. 2021-07-29 : 각 자리 수, 2, 0, 2, 1이 letter, 2021은 pattern)

 

- 생성) SimpleDateFormat sdf = new SimpleDateFormat(“pattern”);

          SimpleDateFormat sdf = new SimpleDateFormat(“pattern”, Locale);

            pattern : 년 – y | yyyy (년도4자리) / yy (년도2자리)

                        월 – M (1~9까지. 10~12) / MM (01~09로 나옴)

                        일 – d (1~9) / dd(01~09)

                        시 – H, k (1~24) / K,h (1~12)

                        오전|오후 – a

                        분 – m(1~9) / mm (01~09)

                        초 – s (1~9) / ss (01~09)

                        요일 – E (월~일) / EEEE(+요일)

          Locale class : java.util package에서 제공하는 class

                           : JVM이 동작하는 OS에서 지원하는 날짜 형식이 아닌 다른 나라의 날짜형식을 저장한 클래스

- SimpleDateFormat은 형식은 설정하나 날짜 정보가 없음

- 일) 날짜 정보를 넣어서 형식에 맞는 날짜를 얻자

      : String formatDate = sdf.format(new Date());

 


# 오늘의 코딩 #

- 3가지의 Class를 활용하여 다양한 기능을 수행해보자!

package test;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * Date 활용 class
 * @author user
 */
public class NationDate {

	/**
	 * 0~4를 입력받아 해당 국가에서 사용하는 날짜 형식으로 반환하는 method<br>
	 * 0 한국 / 1 미국 / 2 중국 / 3 일본 / 4 영국<br>
	 * @param nationCode 국가 숫자
	 * @return
	 */
	public String nationDateFormat(int nationCode) {
		String resultDate = "";

		Locale[] tempLoc = { Locale.KOREA, Locale.US, Locale.CHINA, Locale.JAPAN, Locale.UK };
 
		if (nationCode > tempLoc.length - 1) {
			nationCode = 0; // 국가 코드가 초과된 경우 한국으로 제공
		} // end if

		SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy EEEE a HH:mm", tempLoc[nationCode]);
		resultDate = sdf.format(new Date());

		return resultDate;
	}// nationDateFormat

	public static void main(String[] args) {

		NationDate date = new NationDate();
		System.out.println(date.nationDateFormat(2));
		System.out.println(date.nationDateFormat(20));

	}// main
}// class

 

- 나라별 Locale Constant를 배열의 element로 할당하여, parameter로 입력되는 숫자와 대응되도록 작성!

 

# 출력 결과 #

08-01-2021 星期日 下午 16:52
08-01-2021 일요일 오후 16:52

 

성공적!!

'Development > Java' 카테고리의 다른 글

[Java] Calendar Class(2)  (0) 2021.08.03
[Java] Calendar Class / VO Class  (0) 2021.08.02
[Java] StringTokenizer  (0) 2021.07.30
[Java] Math Class  (0) 2021.07.29
[Java] Interface  (0) 2021.07.28

 StringTokenizer 

- java.util 패키지에서 제공 (import해야 사용 가능함)

- 문자열을 짧은 한 마디(token)로 구분할 때 사용

- StringTokenizer는 값을 가지지 않음

   > 값은 외부에 존재하고 그 제어권만 가지는 것

   > pointer를 사용함 (한 방향으로만 진행)

 

** 다양한 생성자

1) StringTokenizer(String str)

    - 입력되는 문자열의 공백(white space)로 토큰 생성

2) StringTokenizer(String str, String delim)

    - 입력되는 문자열을 기준문자열로 토큰 생성

    - 기준 문자열을 사용하여 토큰을 구분하는 생성자

3) StringTokenizer(String str, String delim, boolean returnDelims) 

    - 2)와 동일하나, 기준문자열을 토큰으로 취급할 것인지 결정하는 3번째 매개변수가 있음

 

** 자주 쓰이는 method

- countTokens() : 현재 남은 토큰의 개수

- hasMoreTokens() : 토큰 존재 여부 반환   // true or false 

- nextToken() : 토큰을 얻고 포인터를 다음 토큰으로 이동시킴

- 위 method 들을 활용한 while 문이 자주 사용됨 

  > 형식 : while ( 객체명.hasMoreTokens() ) {

                       ... 객체명.nextToken(); ... }


# 오늘의 코딩 #

- StringTokenizer를 활용해보자

 

package test;

import java.util.StringTokenizer;

public class UseStringTokenizer {

	/**
	 * 문자열 데이터를 기준 문자열로 구분한 후 배열에 넣고 반환하는 method<br>
	 * @return 구분된 문자열
	 */
	public String[] separateData() {
		String data = "짜장면,탕수육,짬뽕,볶음밥,팔보채,크림새우,깐풍기";
		StringTokenizer str = new StringTokenizer(data, ","); // ,로 문자열 나누기

		String[] dataArr = new String[str.countTokens()]; // token 수 만큼 배열 생성

		int i = 0;
		while (str.hasMoreTokens()) { // token을 배열에 할당하기 위한 while
			dataArr[i] = str.nextToken(); // 배열[0]부터 token값 넣기
			i++; // 배열 방을 바꿀 증감식
		} // end while

		return dataArr;
	}// separateData

	/**
	 * 제시된 이름 데이터에서 매개변수로 입력되는 "성"에 해당하는 이름이 몇 개인지 반환하는 method<br>
	 * 
	 * @param lastName 매개변수로 입력되는 성
	 * @return 같은 성에 해당하는 이름 수
	 */
	public int findLastName(String lastName) {
		int sameNum = 0; // 같은 성을 가진 이름의 개수를 저장할 변수

		String data = "김가가,김나나,김다다,박가가,박나나,박다다,이다다,삼다다,안다다,하가가";
		StringTokenizer str = new StringTokenizer(data, ",");

		String[] nameArr = new String[str.countTokens()]; // token 수 만큼 배열 생성

		int i = 0;
		while (str.hasMoreTokens()) { // token을 배열에 할당하는 while
			nameArr[i] = str.nextToken();
			if (nameArr[i].startsWith(lastName)) { // 같은 성을 가졌으면 sameNum의 수가 하나씩 더해짐
				sameNum++;
			} // end if
		} // end while

		return sameNum;
	}// findLastName

	public static void main(String[] args) {

		UseStringTokenizer st = UseStringTokenizer();
		
        // separateData() method 사용
		String[] dataArr = st.separateData(); // 다른 method에서 return한 배열을 할당
		for (String s : dataArr) { // 배열 출력
			System.out.printf("%-5s", s);
		} // end for
		
        // findLastName() method 사용
		String lastName = "박";
		System.out.println("\n" + st.findLastName(lastName));

	}// main

}// class

- 둘다 문자열을 token으로 자른 후 배열에 잘 저장만 한다면 사용하기에 무리는 없었다. 

- method 사용에 익숙해지면 좋을듯!

 

# 출력 결과 #

짜장면
탕수육
짬뽕
볶음밥
팔보채
크림새우
깐풍기

3

 

 

+ Recent posts