문자열 누적 클래스, 메소드 공부필수

String.Builder 와 append





이클립스 다운로드 및 설치

1. http://www.eclipse.org사이트에서 다운로드

2. 압축해제~

3. workspace 지정 끝!





while문



1. while문, do~ while문이 있다. 조건을 언제 검사하느냐의 차이이다.


while(조건) {
//실행문;
}


do {
//실행문;
}while(조건);


2. 조건이 참이면 반복 실행하고, 거짓이 되면 반복을 멈춘다.

3. for문과 while문의 비교

* 증감식의 위치는 논리적으로 위치변경이 가능함.

for (대입문1; 조건식2,5,8,11; 증감식4,7,10) {
//반복 실행하고자 하는 구문;3,6,9
}

-------------------------------------------> while문으로 수정하면 아래와 같다.

대입문1;
while(조건식2, 5, 8, 11) {
// 반복 실행하고자 하는 구문; 3, 6, 9
// 증감식;4, 7, 10

}


for (int a=0; a<10; a++) {  //10회 반복할 수 있는 구문
System.out.printf("%d %n", a); //0, 1, 2, ..., 9
}

-------------------------------------------->while 문으로 수정하면 아래와 같다.

int a=0;
while(a<10) {
System.out.printf("%d %n", a);
a++;
}


for (int a=1; a<=10; a+=2) { //5회
System.out.printf("%d %n", a); //1, 3, 5, 7, 9
}

-------------------------------------------->while 문으로 수정하면 아래와 같다.

int a=1;
while(a<=10){
System.out.printf("%d %n", a);
a+=2;
}




문제) 아래와 같은 경우 출력 결과는?

int a=0;
while (a <10) {
System.out.printf("%d %n", ++a);
}



문제) 반복문을 이용해서 1~100사이의 짝수만 출력. while문 이용




문제) 반복문을 이용해서 1~100 사이의 숫자에서 짝수들의 합, 홀수들의 합까지 출력. while문 이용.
실행예)
짝수들의 합 : 2550
홀수들의 합 : xxxx



문제) 반복문을 이용해서 1~100 사이의 숫자에서
3의 배수의 합, 4의 배수의 합, 3 또는 4의 배수의 합까지 출력. while문 사용
실행 예)
3의 배수의 합: xxxx
4의 배수의 합: xxxx
3 또는 4의 배수의 합: xxxx



문제) 1부터 100까지의 합을 계산해서 출력. while문 이용.
실행 예)
1부터 100까지의 합 : 5050

//Sample03_01.java

//해답은 알아서 -ㅅ- 쉬운문제임



문제) 1부터 100까지의 수중에서 4의 배수만의 합을 계산해서 출력. while문 이용.
실행 예)
1부터 100까지의 합 : 5050

//Sample03_02.java

//해답은 알아서 -ㅅ- 쉬운문제임




문제) 1부터 100까지의 수중에서 4의 배수만 출력
한줄에 4개씩 출력. 빈 줄바꿈 지정은 System.out.println(); 이용. while문 이용.
실행 예)
 4  8 12 16
20 24 28 32
...



문제) 1부터 100까지의 수중에서 4의 배수만 출력
한줄에 4개씩 출력. 줄 끝에 해당 줄 숫자들의 합을 출력
빈 줄바꿈 지정은 String.format("%n"); 이용. while문 이용.
실행 예)
 4  8 12 16 -> 40
20 24 28 31 -> 104
...





do ~ while문

do {
// 실행문
} while(조건);


1. 조건이 참이면 반복실행하고, 거짓이 되면 반복을 멈춘다.
예를 들어, 입력받은 숫자(양의 정수)를 화면에 출력하되, -1이 입력될때까지 계속 반복.


실행 예)
숫자입력(양의 정수)?1
1
숫자입력(양의 정수)?2
1 2
숫자입력(양의 정수)?3
1 2 3
...
숫자입력(양의 정수)?-1





문제) 입력받은 숫자(양의 정수)를 화면에 출력하되, 출력된 숫자들의 합을 출력. -1이 입력될때까지 계속 반복.
실행 예)
숫자입력(양의 정수)?1
1 -> 1 
숫자입력(양의 정수)?2
1 2 -> 3
숫자입력(양의 정수)?3
1 2 3 -> 6
...
숫자입력(양의 정수)?-1





문제) 입력받은 숫자(양의 정수)를 화면에 출력하되, -1이 입력될때까지 계속 반복.
출력된 숫자들의 합을 마지막에 한번 출력
실행 예)
숫자입력(양의 정수)?1
1
숫자입력(양의 정수)?2
1 2
숫자입력(양의 정수)?3
1 2 3
...
숫자입력(양의 정수)?-1
현재까지 입력된 숫자들의 합: xxxx





문제) 입력받은 숫자(양의 정수)를 화면에 출력하되, -1이 입력될때까지 계속 반복.
마지막에 최대값을 출력
실행 예)
숫자입력(양의 정수)?1
1
숫자입력(양의 정수)?2
1 2
숫자입력(양의 정수)?3
1 2 3
...
숫자입력(양의 정수)?-1
현재까지 입력된 숫자들중에서 최대값: xxxx





문제) 입력받은 숫자(양의 정수)를 화면에 출력하되, -1이 입력될때까지 계속 반복.
마지막에 최대값을 출력
실행 예)
숫자입력(양의 정수)?1
1
숫자입력(양의 정수)?2
1 2
숫자입력(양의 정수)?3
1 2 3
...
숫자입력(양의 정수)?-1
현재까지 입력된 숫자들중에서 최대값: xxxx
현재까지 입력된 숫자들중에서 최소값: xxxx





이중 반복문

1. for문이나 while문 등을 겹쳐서 코딩.

for (대입문1; 조건식2 12 19; 증감식11 18) {
        //(이 부분은 바깥쪽 for문의 영향 범위)

for (대입문3 13; 조건식4 7 10 14 17; 증감식6 9 16) {
// 이부분은 안쪽 for문의 영향 범위5 8 15
}

//(이 부분은 바깥쪽 for문의 영향 범위)
}


예를 들어, 1부터 10까지 숫자를 출력하는 과정을 보면

for (int a=1; a<=10; a++) {
System.out.printf("%d ", a);
}

-------->

 1 2 3 4 5 6 7 8 9 10 


for (int a=1; a<=10; a++) {
for (int b=1; b<=10; b++) { //100회실행
System.out.printf("%d ", b);
}
System.out.printf("%n"); //줄바꿈지정 // 10회실행
}

--------->

1 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9 10 


예를 들어, 아래 코드에서 출력 결과는?

for (int a=1; a<=10; a+=2) { //5회 반복
for (int b=1; b<=10; b++) { //10회실행
System.out.printf("%d ", b);
}
System.out.printf("%n"); //줄바꿈지정
}



예를 들어, 아래 코드에서 출력 결과는?

for (int a=1; a<=10; a++) { //10회 반복
for (int b=a; b<=10; b++) { //10회실행
System.out.printf("%d ", b);
}
System.out.printf("%n"); //줄바꿈지정
}



예를 들어, 아래 코드에서 출력 결과는?

for (int a=1; a<=10; a++) { //10회 반복
for (int b=10; b>=a; b--) { //10회실행
System.out.printf("%d ", b);
}
System.out.printf("%n"); //줄바꿈지정
}



문제) 아래와 같은 결과가 나오도록 이중 for문 구성.
실행 예)
1 2 3 4 5 6 7 8 9 10 
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7
1 2 3 4 5 6
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1



WRITTEN BY
빨강꼬마

,
String.format("%s이다", 변수);
-> printf는 서식지정자와 함께 출력을 위해 사용되는 메소드임을 기억한다면
String.format은 기억하기 쉬움. 출력대신 변수데이터를 위한 메모리의 저장 메소드로 변경해서 기억하면 됨.

또한, 자주쓰는 형변환 메소드들 기억하기



if문 문제) 임의의 점수를 입력받아서 판정을 출력.
실행 예)
점수 입력(0~100)? 90
90~100 -> A
80~89 -> B
70~79 -> C
60~69 ~> D
0~59->F

입력된 점수 : 90
판정 결과 : A

 

 

 


문제) 세 개의 정수를 입력 받고, 가장 큰 수와 가장 작은 수를 나누어서 출력.
실행 예)
숫자1?30
숫자2?10
숫자3?20

입력된 숫자 : 30, 10, 20
가장 큰 수 : 30
가장 작은 수 : 10

 

문제) 국,영,수 점수를 입력 받아서 판정 결과 출력.
판정 기준은
합격 -> 과목별로 40점 이상이면서, 평균이 60점 이상.
과락 -> 과목중 40점 미만이 있고, 평균이 60이상.
불합격 -> 평균이 60점 미만

평균이 60점 이상 -> 합격 또는 과락 -> 국영수 점수가 모두 40점 이상인지 확인.
평균이 60점 이하 -> 불합격

실행 예)
국어(0~100)?XX
영어(0~100)?YY
수학(0~100)?ZZ

입력받은 점수 : 국어 xx점, 영어 xx점, 수학 xx점
판정 결과 : 합격

 



for문

1. 반복문. 정해진 횟수만큼 반복해야 하는 경우 유용하게 사용되어지는 반복문.
2. 기본형식

for (대입문1; 조건식2,5,8,11; 증감식4,7,10) {
 //반복 실행하고자 하는 구문;3,6,9
}
-> 대입문 먼저 실행
-> 조건식 확인. 참일 경우 구문 실행.
-> 증감식 실행.
-> 조건식 확인. 거짓일 경우 반복문 실행 중단.

for (int a=0; a<10; a++) {  //10회 반복할 수 있는 구문
 System.out.printf("%d %n", a); //0, 1, 2, ..., 9
}
for (int a=0; a<=10; a++) { //11회
 System.out.printf("%d %n", a); //0, 1, 2, ...., 10
}
for (int a=1; a<=10; a++) { //10회
 System.out.printf("%d %n", a); //1, 2, ..., 10
}
for (int a=1; a<=10; a+=2) { //5회
 System.out.printf("%d %n", a); //1, 3, 5, 7, 9
}
for (int a=2; a<=10; a+=2) { //5회
 System.out.printf("%d %n", a); //2, 4, 6, 8, 10
}
for (int a=1; a>10; a++) { //0회
 System.out.printf("%d %n", a); //X
}
for (int a=1; a<10; a--) { //무한반복
 System.out.printf("%d %n", a); //1, 0 , -1, -2, ......, -2147483648
}

for ( ; ; ) { //무한반복
 // 실행 구문;
 if (조건) {
  break; // 반복블럭 탈출
 }

 

문제) 반복문을 이용해서 1~100 사이에 존재하는 짝수만 출력.


//Test32.java


 

문제) 반복문을 이용해서 1~100 사이에 존재하는 짝수만 출력.
마지막에 짝수들의 합도 같이 출력



문제) 반복문을 이용해서 1~100 사이의 숫자에서 짝수들의 합, 홀수들의 합까지 출력
실행예)
짝수들의 합 : 2550
홀수들의 합 : xxxx


 

다른방법으로 문제 해결

 

문제) 반복문을 이용해서 1~100 사이의 숫자에서
3의 배수의 합, 4의 배수의 합, 3 또는 4의 배수의 합까지 출력.
실행 예)
3의 배수의 합: xxxx
4의 배수의 합: xxxx
3 또는 4의 배수의 합: xxxx

 

문제) 대문자로 구성된 문자열을 입력받고 나서
소문자로 변경한 다음 출력.
실행 예)
문자열 입력(대문자)?
입력한 문자:
소문자로 변환:





WRITTEN BY
빨강꼬마

,

8. 논리 연산자 && || !
-> 결과가 true, false로 리턴.


조건1 && 조건2 -> AND 연산자. 조건1과 조건2의 true, false에 따라서 최종적인 true, false를 리턴
                          동시에 true일때만 최종 true가 됨. false가 하나 있으면 무조건 false를 리턴


조건1 || 조건2 -> OR 연산자. 조건1과 조건2의 true, false에 따라서 최종적인 true, false를 리턴
                          동시에 false일때만 최종 false가 됨. true가 하나 있으면 무조건 true를 리턴.


(! (조건) ) -> NOT 연산자. 조건의 true, false를 반대로 리턴







자료형


1. 정수형


byte -> 1바이트, 표현범위: -128 ~ 127

short -> 2바이트, -32768 ~ 32767

int -> 4바이트(32비트), -2,147,483,648 ∼ 2,147,483,647.  (암기)

long -> 8바이트. 접미사 L표기 필요.


10진수 -> 0 ~ 9 조합

2진수 -> 0, 1 조합

16진수 -> 0 ~ 9 ~ A ~ F 조합



Wrapper 클래스 (기본자료형에 대한 클래스 표현)

byte -> Byte

short -> Short

int -> Integer

long -> Long


Integer.parseInt() -> 형 변환 메소드

Integer.MAX_VALUE -> int 자료형의 최대값을 돌려주는 상수

Integer.MIN_VALUE -> int 자료형의 최소값을 돌려주는 상수






문제)) 임의의 수를 입력 받아서 2진수, 10진수, 16진수 표현을 출력.
실행예)
10진수 입력(0~2147483647)?
2진수: xxxxxxxx
10진수: xxxxxxxx
16진수: xxxxxxxx






2. 문자형과 문자열형


char -> 문자형. 기본자료형. 'A'. ASCII코드로 저장됨.
String -> 문자열형. 참조형. "ABCD". 


char ch1 = 'AB'; // 오류
char ch2 = 'A';  // 성공


String st1 = "AB"; // 성공


ASCII코드중에서 문자 0은 48, 9는 57
ASCII코드중에서 문자 A는 65, Z는 90
ASCII코드중에서 문자 a는 97, z는 122


char과 int 자료형은 서로 호환이 가능한 범위를 가진다.


char ch3 = 65; //성공. 'A'가 입력됨.


System.out.printf("%d %n", 65); // 65
System.out.printf("%c %n", 65); // A


String str = "TEST";
System.out.printf("%c %n", str.charAt(0)); //문자열이 저장된 변수명.charAt(문자열위치값) 즉, 여기서는 T 리턴
System.out.printf("%c %n", str.charAt(1));
System.out.printf("%c %n", str.charAt(2));
System.out.printf("%c %n", str.charAt(3));








문제) 대문자로 구성된 4글자짜리 문자열을 입력받고 나서, 소문자로 변경한 다음 출력.
실행 예)
문자열 입력(4자, 대문자)?TEST
입력된 문자열 : TEST
소문자로 변환 : test






자료의 형 변환


1. 자료의 형이 일치하지 않는 경우 원하는 자료형으로 변환할 수 있어야 한다.

2. 묵시적 형변환, 명시적 형 변환
묵시적 형 변환 -> 자동으로 변환시켜 주는 것. 데이터가 원래의 값을 유지하는 것이 가능. 작은 데이터를 큰 자료형에 넣는 경우에 주로 발생.
명시적 형 변환 -> 특정 명령 수행을 통해서 강제적으로 변환을 시키는 것. 데이터가 원래의 값을 유지하지 못하는 경우도 발생.





형 변환의 대표적인 예

문자열형 -> 숫자형, 숫자형 -> 문자열형


int 변수 = Integer.parseInt(문자열형);
double 변수 = Double.parseDouble(문자열형);


String 변수 = String.valueof(정수형);
String 변수 = String.valueof(실수형);


String 변수 = Integer.toString(정수형);
String 변수 = Integer.toBinaryString(정수형);
String 변수 = Integer.toHexString(정수형);


String 변수 = String.format("%d", 정수형);
String 변수 = String.format("%f", 실수형);


char 변수 = 문자열형변수명.charAt(인덱스);






if문


1. 주어진 조건에 따라 분기 방향을 정하기 위하여 사용하는 제어문
2. 기본형식


//조건이 만족되는 경우(true인 경우)만 실행문 실행

if (조건) {

// 실행문;

}


//조건이 만족되는 경우(true인 경우)는 실행문1 실행

//조건이 만족되는 않는 경우(true인 경우)는 실행문2 실행

if (조건) {

// 실행문1;

} else {

// 실행문2;

}


사용 가능 방법

if (조건) {

//실행문1;

} else if (조건2) {

//실행문2;

} else {

//실행문3;

}

-> 다른방법으로 표기하면

if (조건) {

//실행문1;

} else {

if (조건2) {

//실행문2;

} else {

//실행문3;

}




//if, else 구문은 한번만 표기, else if (조건)은 추가 가능.

if (조건) {

//실행문1;

} else if (조건2) {

//실행문2;

} else if (조건3) {

//실행문3;

} else {

//실행문4;

}

-> 위와 같은 상황은 다른 표현으로 사용하기도 합니다. 다만, else 즉 실행문4가 없음.

if (조건1) {

// 실행문1;

}

if (조건2) {

// 실행문2;

}

if (조건3) {

// 실행문3;

}




문제) 세 개의 숫자 중에서 가장 큰 숫자 구하기. 단, if문 사용.
실행 예)
숫자1?XX
숫자2?YY
숫자3?ZZ
입력 받은 숫자 : XX, YY, ZZ
가장 큰 숫자 :  ZZ



문제) 임의의 수를 입력 받아서 짝수, 홀수로 구분해서 출력.
실행 예)
임의의 정수(0 이상)? 
입력받은 숫자 :
구분 : 






문제) 임의의 수 를 입력 받아서 3의 배수, 4의 배수로 구분해서 출력.
실행 예)
임의의 정수(3 또는 4의 배수)?
입력받은 숫자 :
구분 : 3의 배수

혹은

임의의 정수(3 또는 4의 배수)?
입력받은 숫자 :
구분 : 4의 배수

혹은

임의의 정수(3 또는 4의 배수)?
입력받은 숫자 :
구분 : 3의 배수 또는 4의 배수


WRITTEN BY
빨강꼬마

,