일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- JCF
- Selector
- 정규화표현식
- scope
- controller
- extends
- 자바
- 알고리즘
- 형변환
- regex
- interface
- jquery
- DB
- 자바스크립트
- java
- 자료구조
- jsp
- 참조타입
- for문
- jdbc
- Set
- SQL
- 개선
- 환경설정
- html
- iBATIS
- jar
- JavaScript
- String
- mybatis
- Today
- Total
프로그래밍공부노트
Day 9 - JAVA(if문, for문, 3항연산자,진약수 구하기,API문서,JAR) 본문
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 -> 개발 소스 배포용
'JAVA' 카테고리의 다른 글
Day 11 - JAVA (String 특성, heap, String pool, Overloading, valueOf, indexOf, charAt) (0) | 2021.02.24 |
---|---|
Day 10 - JAVA (완전수 구하기, 친화수 구하기, && , String) (0) | 2021.02.23 |
Day 8 - JAVA실습(for문, 삼각형) (0) | 2021.02.20 |
Day 7 - JAVA(if-else, while, do-while, break, continue) (0) | 2021.02.18 |
Day 6 - JAVA(Argumnets, Paratmeter, 기본타입, 참조타입) (0) | 2021.02.17 |