#16

조성현·2023년 3월 21일
0

System 클래스

속성
err
in
out
프로그램 종료하기

timestamp

엔터

얕은복사와 깊은복사

얕은 복사 : 주소값을 복사, 주로 참조타입(reference type)
깊은 복사 : 실제값을 새로운 메모리 공간에 복사, 인스턴스가 독립적, 주로 값타입(value type)


브라우저 실행

cmd에서 실행하기

이클립스에서 실행하기

메서드

Util

Date


Calendar



Calnedar로 달력 만들기
방법1.

import java.util.Scanner;
public class CalendarTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	      Scanner sc = new Scanner(System.in);
	      
	      /* monthSet은 각 달에 대한 날짜들을 저장한 배열,
	       * year은 연도, month는 달, week는 요일, day는 일, i는 반복문을 사용하기 위한 변수. */
	      int year=0, month=0, week=0, day=0, i=0; 
	      int monthSet[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
	  
	      while(true) {
	       System.out.println("원하는 연도를 입력하세요. (0을 누르면 프로그램을 종료합니다.)");
	       year = sc.nextInt();
	       if(year==0) {
	        System.exit(0);
	        break;
	       }
	       System.out.println("원하는 달을 입력하세요.");
	       month = sc.nextInt();
	       if(month<1 || month>12) {
	        System.out.println("1월에서 12월 사이의 달을 입력해주세요.");
	        return;
	       }
	       System.out.println("");
	   
	       if(year%4 == 0 && year%100 != 0 || year%400 == 0) // 윤년의 조건.
	        monthSet[1] = 29; // 윤년이면 2월 (monthSet[1])은 29일,
	       else
	        monthSet[1] = 28; // 윤년이 아니면 2월은 28일이다.
	   
	       // 01년 1월 1일부터 계산.
	       day = (year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400;
	       for(i=0;i<month-1;i++) {
	        day += monthSet[i];  
	       }
	       week=day%7; // 구하고자 하는 달의 시작일(1일)의 요일을 구함.
	   
	       System.out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n", "월", "화", "수", "목", "금", "토", "일");   
	       for(i=0;i<week;i++) {
	        System.out.print("\t"); // 1일이 시작하기 전 공백을 위한 반복문.
	       }
	       for(i=1;i<=monthSet[month-1];i++) {
	        System.out.printf("%d\t", i); // i를 입력한 달의 일수만큼 찍음.
	        week++;   
	        if(week%7 == 0)        // 요일이 일요일이 지나면
	         System.out.println(); // 줄을 바꿈.
	       }
	       if(week%7 != 0) {
	        System.out.println();
	       }
	      }
	 }
}

출력결과

방법2.

필드&생성자 클래스

실행할 메인클래스

출력결과

방법3

StringTokenizer - 문자열 나누기

StringJoiner - 문자열 연결

Random

로또만들기

Scanner

예제

무한루프와 exit

ArrayList

예제

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ArrayListTest01 {
	List<Object>list = new ArrayList<>();
	List<Integer>integers = Arrays.asList(1, 2, 3, 4, 5);
	
	public void createText( ) {
		list.add("Hello"); 
		list.add("Hello");			// 동일 데이터 추가
		list.add(null);				// null 추가
		list.addAll(integers);		// 다른 collection 요소 추가
		list.add(integers);			// 다른 collection 추가
		list.add(0, new Object());	// 끼워넣기
		System.out.println("추가 후 내용 출력 : " + list);
	}
	
	public void retrieveTest() {
		//반복을 이용한 요소 조회
		for(int i=0; i<list.size(); i++) {
			System.out.println(i + ":" + list.get(i));
		}
		//포함 여부의 활용
		if(list.contains("Hello")) {
			System.out.println("Hello의 위치는 : " + list.indexOf("Hello"));  // 객체의 위치조회
			}
		//서브리스트 활용
		List<Object>sub = list.subList(3, 5);
		System.out.println("sub의 내용 : " + sub);
		System.out.println("sub의 내용을 다 가지고 있는가?" + list.containsAll(sub));
	}
	public void updateTest() {
		list.set(1, "update");
		System.out.println("업데이트 후 : " + list);
	}
	public void deleteTest() {
		list.remove(0);			// 특정 위치의 객체 삭제
		list.remove("Hello");	// 특정 객체가 있다면 처음 객체 삭제
		//타입이 integer인 경우 삭제
		for(int i=0; i<list.size(); i++) {
			if(list.get(i) instanceof Integer) {
			list.remove(i);
			}
		}
		System.out.println("삭제 후 : " + list);
		list.clear();  // 리스트 초기화
		System.out.println("초기화 후 : " + list);
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayListTest01 alt = new ArrayListTest01();
		alt.createText();
		alt.retrieveTest();
		alt.updateTest();
		alt.deleteTest();
	}

}

주민번호검사

public class JuminCheck02 {

	public static void main(String[] args) {
		if (args.length != 1) {
			System.out.println("java 클래스명 xxxxxx-xxxxxxx 형식으로 입력");
		} else {
			String strJumin = args[0].replaceAll("-", "");

			int[] bits = { 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5 };
			int sum = 0;
			for (int i = 0; i < bits.length; i++) {
				sum += Integer.parseInt(strJumin.substring(i, i + 1)) * bits[i];
			}
			int lastNum = Integer.parseInt(strJumin.substring(12, 13));

			int resultNum = (11 - (sum % 11)) % 10;

			if (lastNum == resultNum) {
				System.out.println("주민등록번호 형식이 맞음");
			} else {
				System.out.println("주민등록번호 형식이 틀림");
			}
		}
	}
}

0개의 댓글