1일차

|

주요내용 : casting, scanner, char, String, subString, 대소문자변환, 형변환, indexOf, equals, Date Class, Calendar Class, Unicode, StringTokenizer

import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
import java.util.StringTokenizer;

public class hellojava {

	@SuppressWarnings("deprecation") // 앞으로 쓰지말라는 경고표시
	public static void main(String[] args) {
		System.out.println("안녕하세요?"); // 화면에 내용(안녕하세요?)을 출력합니다. 한줄짜리 주석
		System.out.println("HelloJava");
		System.out.println("반갑습니다.");
		/*
		 * System : 클래스 out : 객체 println : 메소드 ("안녕하세요"?) : 매개변수 값 ; : 문장의 끝
		 * 
		 */

//		int x = 100; // 정수형 데이터 100을 변수 x에 저장하시오.
//		int y = 300;
//		int z = x + y; // 덧셈
//		System.out.println(z);//400
		/*
		 * int : 정수형 4바이트 메모리 x : 변수 = : 대입 연산자 (오른쪽의 연산의 결과를 왼쪽으로 저장하시오) 100 : 실제적인 데이터
		 * ; : 문장의 끝 
		 */

		/*
		 * 1. 데이터 : 자료 => 정수형(소수점이 없는 수=100), 실수형(소수점이 있는 수=123.45), 문자(character = 알파벳 한 문자(대문자/소문자)='a') 문자열(String => 여러개의 문자로 구성="ABCD"), 특수기호(^,%,$,#,@,!,~,&,(,)) 숫자와 문자
		 * 2. 변수 : x, y, z....
		 * 3. 자료형 : byte(1), short(2), int(4), long(4), float(4), double(8), boolean(1bit) 
		 * 4. 메모리 : RAM(8GB) = 주소값(address) = 포인터
		 * 5. algorithm(알고리즘) : 문제해결방법 => 조건문, 반복문, 배열, 객체지향내용...
		 * 6. 사고력(국어) + 논리력(수학) = 문제해결능력 
		 */

		/*
		 * 문제 풀이 방법(프로그래밍 5단계)
		 * 1. 요구사항 파악 : 문제가 목적, 의도 하는 바를 알아내는 것
		 * 2. 요구사항 분석 : 인재, 비용, 데이터베이스 사양, 서버 사양, 주변상황...
		 * 3. 요구사항 설계 : 데이터, 변수, 자료형, 형변환, 객체지향접근(클래스, 인터페이스,...)
		 * 4. 구현 : coding
		 * 5. 테스트 : 정상적으로 동작하는지 확인!!!
		 * 6. 배포 및 유지보수 : 60 ~ 70%가 수입원(회사) : SM(System Management)
		 * 1~5. : SI 
		 */

//문제1] 1000 + 5000 = 6000이 나오도록 프로그램을 작성하세요.
		// 1. 직접 데이터 입력 방법
		int a = 1000, b = 5000;
		int c = a + b;
		System.out.println(c); // 6000

		// 2. 키보드로부터 데이터 입력 방법
		//	Scanner sc = new Scanner(System.in); //sc라는 객체명은 다른걸로 써도 상관없다.
		//	System.out.println("첫번째 숫자를 입력하세요.");
		//	int x = sc.nextInt();// 1000 
		//	System.out.println("두번째 숫자를 입력하세요.");
		//	int y = sc.nextInt();// 5000
		//	
		//	int z = x + y;
		//	System.out.println("두 수의 덧셈의 합은= " + z);// 6000
        // 자바는 데이터가 입력될 때, 대부분(기본적으로) 문자로 인식됩니다.(" ") 문자는 연산을 못하므로, nextInt()를 써야함.(정수형으로 값을 받겠다.)
        
        // 3. 키보드로부터 데이터 입력 방법2

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("첫번째 숫자 입력 : ");
		String x = br.readLine(); // "3000" 을 문자열로 받는다. readLine : 한라인 전체를 문자열로 받아서 읽어라. 객체명.메소드명 or 클래스명.클래스메소드명 공식
		float xx = Float.parseFloat(x); // 3000.0   parse__ : 들어온값에 대해서 __으로 변환하겠다.
		System.out.println("두번째 숫자 입력 : ");
		String y = br.readLine(); // "6000"
		float yy = Float.parseFloat(y); // 6000.0
		float zz = xx + yy;
		System.out.println(zz); // 9000.0
		System.out.println("연산의 결과는 = " + zz);
        
        /* 7.BufferedReader 클래스 : 버퍼에 데이터를 모은다.(4~8kbyte)
		 * 6.br : object(객체)
		 * 5.= : 대입연산자
		 * 4.new : 메모리 할당 연산자
		 * 3.BufferedReader : 클래스, 객체의 생성, 성능의 향상
		 * 2.(new InputStreamReader : 1byte씩 입력받아라.
		 * 1.(System.in)) : 키보드로부터 데이터를 입력합니다.
		 * ;
		 */
         
         // 문제2를 buffered parse 이용하여 나오도록 해보시오.
		// first=250, second= 450, third = 550.000f, 합계를 구하여 출력해 봅니다.
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("첫번째 숫자 입력 : ");
		
//		String x = br.readLine(); // 250
//		float xx = Integer.parseInt(x); // 250.0
		float xx = Integer.parseInt(br.readLine()); // 한줄로도 쓸수 있다.
		
		System.out.println("두번째 숫자 입력 : ");
		String y = br.readLine(); // 450
		float yy = Integer.parseInt(y); // 450.0
		System.out.println("세번째 숫자 입력 : ");
		String z = br.readLine(); // 550.000
		float zz = Float.parseFloat(z); // 550.000
		float xxx = xx + yy + zz;
		System.out.println(xxx); // 1250.0
		System.out.println("연산의 결과는 = " + xxx);

//문제2] first=250, second=450, third=550.000f, 합계를 구하여 출력해 봅니다.
		int first = 250;
		int second = 450;
		float third = 550.000f;
		int sum;
		// casting(강제적 형변환)
		sum = (int) ((first + second) + third); // 정수형 + 실수형 => 정수형
		System.out.println(sum); // println : 출력 후 줄바꿈
		//	System.out.print(sum); // print : 출력만 함.
		System.out.printf("%d\n", sum); // printf : 형식화된 출력, d : 정수형 , \n : 줄바꿈

		float sum2; // 묵시적형변환(자동형변환)
		sum2 = (first + second) + third; // 정수형 + 실수형 => 실수형
		System.out.println(sum2);
		System.out.printf("%5.1f\n", sum2); // f : 실수형

//문제3] 키가 172.56cm입니다. 이 때, 키가 몇 피트 몇 인치인지 알아보세요.
// 1 inch = 2.54cm, 1 feet = 30.48cm = 12 inch
		double cm, inch, feet, feetsum, inchsum;

		cm = 172.56;
		inch = 2.54;

		feet = inch * 12;
		feetsum = cm / feet;

		inchsum = (cm % feet) / inch;
		System.out.println(feetsum + "몇 피트," + inchsum + "인치입니다.");
		System.out.printf("cm는 %3.2f 피트이고, %3.2f 인치입니다.\n", feetsum, inchsum);

//---------------------------------------------------------------------------------
//문자 데이터 : char(문자), String(문자열)
//---------------------------------------------------------------------------------

		char name = 'h';
		char x = 'y';
		char y = 'e';
		char z = 's';

		String sign = "yes"; // call by reference(참조형)

		System.out.println(name + ", " + sign);
		System.out.printf("name = %c, sign = %s \n", name, sign);

		// 한글 변수 사용 가능.
		String 이름1 = "홍길동";
		String 이름2 = "임꺽정";
		String 이름3;

		이름3 = 이름1 + 이름2; // +는 연결 연산자 기능
		System.out.println(이름3);// 홍길동임꺽정

		// 문자와 숫자와의 연산
		String value = "홍길동";
		String value2 = value + 300;
		System.out.println(value2); // 홍길동300, 문자 + 숫자 => 문자.

		// 대문자와 소문자로 변환
		//	String str = "Java Programming";
		//	String ss = str.toUpperCase();//대문자로 변환
		//	System.out.println(ss); //JAVA PROGRAMMING
		//	
		//	String sss = ss.toLowerCase(); //소문자로 변환
		//	System.out.println(sss); //java programming

//문제4] "It is not the time but will that is wanting" 이라는 문자열이 존재합니다.
//내용 중에서 w라는 문자의 위치를 찾아서 출력하고, 문자열의 전체길이가 얼마인지를 확인하세요.
//charAt(); 해당 문자열을 찾아서 읽어온다.

//index : 0123456789....
		String msg = "It is not the time but will that is wanting"; // 참조변수
		int len = msg.length();
		System.out.println(len); // 47(0~46)

		for (int idx = 0; idx < len; idx += 1) { // 반복문 , idx += 1(복합대입연산자)
			char ch = msg.charAt(idx);

			if (ch == 't') {
				System.out.println("찾는 인덱스 위치는= " + idx);//1, 8, ...
			}
		}

		// indexOf() : 문자의 위치 찾기
		String msg2 = "J a v a Program is Create Many Objects";
		// index : 0123456789....

		int idx1 = msg2.indexOf('a');//
		System.out.println(idx1);// 2

		int idx2 = msg2.indexOf('M');//
		System.out.println(idx2);// 26

		int idx3 = msg2.indexOf('a', 12);// 12번째 이후로 찾아라.(시작지점)
		System.out.println(idx3);// 13

		int idx4 = msg2.indexOf("is");
		System.out.println(idx3);// 16

		// subString(부문문자열 출력)
		String msg3 = "J a v a Program is Create Many Objects";
		// index : 0123456789....

		//	String str2 = msg3.substring(8,20);//8이후, 20이전(사이에 있는 것 찾기)
		//	System.out.println(str2);	// Program is C
		//	
		//	String str3 = msg3.substring(12);
		//	System.out.println(str3);//ram is Create Many Objects

		// String 클래스 : reference type, 무한대 저장 가능.
		/* String 클래스
		 * str4 : 오브젝트(객체)
		 * = : 대입연산자
		 * new : 메모리 할당 연산자
		 * String : 클래스
		 * ("홍길동") : 매개변수데이터 값
		 * ; : 문장의 끝 
		 */

		// equals() : 내용이 동일하면, 같은 주소번지를 부여한다.(내용비교. 메모리 절약.)
		String str4 = new String("홍길동");
		System.out.println(str4);// 홍길동

		String str5 = "홍길동";
		System.out.println(str5);// 홍길동

		String str6 = "김길동";
		System.out.println(str6);// 홍길동

		String str7 = "홍길동";
		System.out.println(str7);// 홍길동

		System.out.println(str4.equals(str5));// true
		System.out.println(str4.equals(str6));// false
		System.out.println(str5.equals(str7));// true

		// == : 주소비교.
		System.out.println(str5 == str7);// 주소비교? 내용같은가? true (내용이 같으면 주소도 같음)
		System.out.println(str5 == str6);// 주소비교? 내용같은가? false (내용이 다르면 주소도 다름)

//문제5] str = "홍길동", str2 = "홍길동", str3 = "홍마차" 이렇게 존재합니다.
		String str = "홍길동";
		String str2 = "홍길동";
		String str3 = "홍마차";

		System.out.println(str.equals(str2));// true
		System.out.println(str2.equals(str3));// false

		str = str3; // str3을 str에 붓는다.(대입한다)

		System.out.println(str.equals(str3));// true
		System.out.println(str == str3);// true (같은 데이터는 하나의 주소를 갖는다.)

		// Date Class(날짜 출력)

		// 1. Date Class
		Date currentDate = new Date();
		// class Object = class

		System.out.println("현재 날짜는= " + currentDate + "입니다.");// 아메리칸 스타일 출력.

		// 보통 컴퓨터는 1970년 1월 1일이 기본 설정되어 있습니다.
		System.out.println("년도: " + currentDate.getYear());// 취소선 나오는 이유 : 앞으로 쓰지 말아라.
		System.out.println("월: " + currentDate.getMonth());
		System.out.println("일: " + currentDate.getDay());
		System.out.println("날짜: " + currentDate.getDate());// 오늘 날짜.

		System.out.println(currentDate.toLocaleString());// 현재 시각(now).

		// 2. Calendar Class
		Calendar cal = Calendar.getInstance();
		System.out.println(cal.get(Calendar.YEAR) + "년"); // 2019년
		System.out.println(cal.get(Calendar.MONDAY) + 1 + "월");// 6월
		System.out.println(cal.get(Calendar.DATE) + "일");//

		System.out.println(cal.get(Calendar.HOUR) + "시"); //
		System.out.println(cal.get(Calendar.MINUTE) + "분");//
		System.out.println(cal.get(Calendar.SECOND) + "초");//

		// 3. Unicode : 한국어, 중국어, 일본어...
		// http://www.unicode.org/charts

		String str8 = "\uAC00"; // 가
		String str9 = "\uB098"; // 나
		System.out.println(str8 + str9);// 가나
		System.out.println(str9); // 나

		// 4. StringTokenizer class : 문자열을 구분자(Delimiter)를 이용하여 구분합니다. 마지막 " " 안에 구분자를 넣는다.
		StringTokenizer st = new StringTokenizer("개구리, 소년, 왕눈이, 아로미, 투투", ",");
		System.out.println("문자열의 갯수는 = " + st.countTokens() + "개");// 5개

		while (st.hasMoreTokens()) { // 추출한 단어가 존재하면
			String data = st.nextToken(); // 순서대로 읽어오세요.
			System.out.println(data);
		}

//문제6]
		StringTokenizer st2 = new StringTokenizer("개구리=소년; 왕눈이=아로미; 투투=가재", "=;");
		System.out.println("문자열의 갯수는 = " + st2.countTokens() + "개");// 6개

		while (st2.hasMoreTokens()) { // 추출한 단어가 존재하면
			String data2 = st2.nextToken();
			System.out.println(data2);
		}

	}
}
//ctrl + F11 : 실행

'Bitcamp > BITCAMP - Java' 카테고리의 다른 글

3일차 - 과제  (0) 2019.06.26
3일차  (0) 2019.06.26
2일차 - 과제  (0) 2019.06.26
2일차 - GUISample1  (0) 2019.06.25
2일차  (0) 2019.06.25
And