프로그래밍공부노트

Day 9 - JAVA(if문, for문, 3항연산자,진약수 구하기,API문서,JAR) 본문

JAVA

Day 9 - JAVA(if문, for문, 3항연산자,진약수 구하기,API문서,JAR)

SANGJIN-YU 2021. 2. 22. 21:08
반응형

21. 연산 정리

 - for문

 

for(int i = 0; i<arg.length i++) {}  for문 끝
초기값 조건 스텝 연산

 


 - if문

문법 문법
if(조건식){

문장;

}
if(조건식){

문장1;

} else {

문장2;

}

 


 


while문


do while


 21. if문과 3항연산자

if문 3항연산자
if(expression){

do something

} else {

do something

}


Type = (expression) ? true : false;

3항연산자는 반드시 반환타입을 가지고 있다

expression판단 후 true와 false의 실행되는 것은 같아야 한다

ex) int n = (expression) ? 10 : 20; 

21. for문 실습

 - 다이아몬드

    1) method 2개로 위아래 나눠서 다이아몬드 모양 만들기

        연산에 너무 연연하지 말고 로직을 찾을 것 하나의 값에만 맞는 하드코딩 조심

        Arguments가 5인데 실제로는 0~9층까지 10개층이 만들어짐

public class Diamond_Process {

	//위 삼각형
	public void printIncrement(int stage) {
		for (int i = 0; i < stage; i++) {
			for (int j = 0; j < (stage - i - 1); j++) {
				System.out.print("→");
			}//공백
			
			for (int k = 0; k < (2*i)+1; k++) {
				System.out.print("★");
			}//그림
			System.out.println();
		}
	}
    //아래 삼각형
    public void printDecrement(int stage) {
			for (int i = 1; i < stage; i++) {
				for (int j = 0; j < i; j++) {
					System.out.print("→");
				}//공백
				for (int k = 0; k < 2*(stage-i)-1; k++) {
					System.out.print("★");
				}//그림
				System.out.println();
			}//층수
		}
	}


 - 진화 다이아몬드

    1) for문에 선언된 i가 증감에 영향을 받지 않도록 tmp변수를 사용하여 작성

      0층에 공백 3칸 그림 1칸                                  mid - tmp = j(공백)

      1층에 공백 2칸 그림 3칸                                  2*(tmp)+1 = k(그림)

      2층에 공백 1칸 그림 5칸

      3층에 공백 2칸 그림 5칸

      4층에 공백 3칼 그림 1칸

 - 공백과 그림을 찍는 메소드와 조건에 대한 판단을 해주는 메소드를 분리하여 작성

public class Diamond_IF {

	// 중간층 전까지는 증가 / 중간 이상이 되면 감소
	int tmp = 0;
	//중간 위치의 값 
	int mid = 0;
	
	public void calDiamond(int n) {
		mid = n/2; 
		// 여기서 i는 중간값인지만 판단할때 사용 연산이나 그림그리는데 사용하지 않음
		for (int i = 0; i < n; i++) { // 0 1 2 3 
		
			for (int j = 0; j < mid-tmp; j++) { // (3-0), (3-1) 
				System.out.printf("○");
			}//공백
			
			for (int j = 0; j < (2*tmp)+1; j++) { // (2*0)+1, (2*1)+1
				System.out.printf("●");
			}//그림
			
			for (int j = 0; j < mid-tmp; j++) { // (3-0), (3-1) 
				System.out.printf("○");
			}//공백
			
			//조건 판단 문
			if (chkStage(i,mid)) { // 현재층수와 중간위치
				tmp++;
			} else {
				tmp--;
			}
			System.out.println();
		}//층수
	}

	private boolean chkStage(int i, int mid2) {
		boolean isc = false;
		if (i < mid2) {
//			tmp++;
			isc = true;
		} 
		return isc;

- 중간층의 값과 비교하여 클때의 연산과 작을때의 연산을 나누지 않고 절대값을 통하여 구분

public class Math_Abs_Diamond {

	public void Diamond(int n ) {
		
		for (int i = 0; i < n; i++) {
			System.out.print(Math.abs(i-n/2));
			for (int j = 0; j < Math.abs(i-n/2); j++) {
				System.out.print("○");
			}//공백
			
			for (int j = 0; j < n - 2*Math.abs(i-n/2); j++) {
			System.out.print("◆");
			}//그림
			System.out.println();
		}//층수

	}
}


 1) 진약수의 합과 범위에서의 갯수

 2) 완전수 1)번을 jar로 packaging해서 사용

 3) 친화수 1)번을 jar로 packaging해서 사용

 

    - 진약수란 0과 자기자신을 제외하고 0으로 나누어 떨어지는 수

/**
 * 진약수에 관련된 기능을 담은 라이브러리
 * @author SANGJINYU
 * @since 2021.02.22
 * @version 1.0b
 */
public class ProperDivisor {
	
	/**
	 * 입력받는 수의 진약수의 합을 구하는 메소드
	 * @param num 진약수의 합을 원하는 숫자
	 * @return  num의 진행수의 합
	 */
	public int yaksuSumCal(int num) {
		int sum = 0;
		for (int i = 1; i < num; i++) {
			if(checkYaksu(num, i)){
//				System.out.println("약수" + i);
//				sum = sum + i;
				sum += i;
			}
			
		}//for
		return sum;
//		System.out.println("총 약수의 개수" + count );
//		System.out.println("총 약수의 합" + sum);
	}

	/**
	 * 숫자 두개를 비교하여 약수 여부를 판단하는 메소드
	 * @param num 기준 입력값
	 * @param val 비교 입력값
	 * @return true : 약수 false : 약수가 아님
	 */
	private boolean checkYaksu(int num, int val) {
		boolean isc = false;
		if (num%val == 0 ) {
			isc = true;
		}
		return isc;
	}
}

 

 21. API(Application Programming Interface)

 1) javadoc.exe

    - 하나 이상의 package에 있는 수많으 클래스와 인터페이스로 구성된 API 설명

    - private / protected 멤버에 대한 정보를 공개하지 않으면서 이들에 대한 javadoc를 만들 수 있음

    - /** */사이에 작성하면 됨

    - HTML 코드로 작성

    - 문서Tag @author @version @param @return  ...

    - Encoding

 

  22. JAR(Java Archive) / Runnable JAR

 1) 작성된 java 프로그램을 소스형태가 아닌 배포형태의 압축파일로 만드는 것

    - source파일 + 실행 파일 포함 포함 (*.class) (*.java)

    - 실행파일 (*.class)

 

 VM : -locale ko_KR -encoding UTF-8 -charset UTF-8 -docencoding UTF-8

 

 2) WAR(Web Archive) -> J2EE 배포용

    ZIP 개발용 Archive -> 개발 소스 배포용

반응형