일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 이클립스
- JSP
- 답변형 게시판
- HTTP Status 404
- git
- rownum
- HTTP Status 500
- Java
- tomcat
- distinct
- oracle
- SQL
- Oracle DB
- 부트스트랩
- 한글 인코딩
- 제약조건
- ||
- 모조칼럼
- 성적프로그램
- group by
- Bootstrap
- HTML
- github
- alias
- 과정평가형
- JavaScript
- Oracle SQL
- CRUD
- jQuery
- sql developer
Archives
초급의 끄적거림
[JAVA] 반복문 (for / 무한루프 / break / continue) 본문
1. 반복문
<형식>
for(시작값; 종료값; 증감) { }
<무한LOOP (무한루프)>
for(;;){ }, while(true){ }
- scope : 유효범위
- break : 반복문을 빠져나옴 (switch에서 사용)
- continue : 반복문을 계속 수행
for(int a=1; a<=3;a=a+1){//a라는 변수는 for 안에서만 쓸 수 있음 (a의 scope : for 안에 국한)
System.out.println(a+"JAVA"); // 1: JAVA 2 : JAVA 3 : JAVA
/*
* a=1 에서 시작해서 종료값은 a<=3 이라 1<=3 JAVA
a=1+1 이니까 2<=3 JAVA
a=2+1 3<=3 JAVA
a=3+1 4<=3 X
}//for end - 를 빠져나가면 변수 a가 사라지는 것, 알아서 삭제해줌 (=garbage collecting)
2. 변수의 유효범위
- 지역변수와 전역변수는 같이 존재할 수 있다
- 그러나 그 중 우선순위는 1) 지역변수 → 2) 전역변수
1) local variable : 지역변수, { } 안에 선언
2) global variabel : 전역변수, 전체적으로 다 쓸 수 있는 변수
System.out.println(a); : 라고 지정 불가, a의 경우에는 for의 scope (유효범위) 에서만 사용되는 변수이기 때문에 if 외에서 a 변수 사용 불가
3. 연습
//4단 출력하기
for(int a=1; a<=9; a++){//a+=1
//a++
//++a
System.out.println(4+"*"+a+"="+(a*4));
}//for end
// 알파벳 출력하기
for(char ch='A'; ch<='Z'; ch++){
System.out.print(ch); //ln이 없기 때문에 가로로 연달아 나옴
}//for end
//1~10중에서 3의 배수만 출력하기
for(int a=1;a<=10;a++){ // for 안에 if문을 써도 됨, 이 때 { }가 중복해서 많이 나올 수 있기 때문에 구별에 주의할 것
if(a%3==0){ //주로 시험 문제는 'a%3==0' 이 제시되었을 때 ㅁ을 구하는 것.
System.out.println(a);
}//if end
}//for end
// 갯수
// 누적
// 1~10사이 중에서 3의 배수의 갯수를 구하시오 - 3개
int count=0;
for(int a=1; a<=10; a++){
if(a%3==0){
count=count+1; //count+=1, count++, ++count
// 두 개씩 묶어서 숫자를 세고싶으면 +1이 아니라 +2를 하면 됨. (ex. 2 4 6 8 10...)
}//if end
}//for end
System.out.println(count+"개");
//1~10 사이 중에서 3의 배수의 합을 구하시오 - 18
int hap=0 ;
for(int a=1; a<=10; a++){
if(a%3==0){
hap=hap+a; // hap+=a
}
}//for end
System.out.println(hap);
//문1) 서기 1년~ 서기 2019년 중에 윤년의 갯수를 구하시오
int count1=0;
for(int y=1; y<=2019; y++){
if(y%4==0 && y%100!=0 || y%400==0){
count1=count1+1;
}
}//for end
System.out.println("윤년의 갯수 :"+ count1 + "개");
//문2) 4 팩토리얼 값을 구하시오.
// → 4가 1을 만날 때까지 나오는 수 4321을 다 곱하는것 = 4*3*2*1 = ?
long b=1; // 곱하기 누적할 때 시작값은 1. 주의할 것. (+) 곱하기를 하는 경우에는 int 만으로 부족할 수 있기 때문에 long 사용 추천
for(int a=4; a>=1; a--){ //혹은 a=1; a<=4; a++ 도 가능
b=b*a;
}//for end
System.out.println("4팩토리얼 값 : "+ b);
// 문1) 1~100중에서 2의 배수이면서 3의 배수의 갯수를 구하시오
int count = 0;
for(int a=1; a<=100; a++){
if(a%2==0&&a%3==0){ //if(a%6==0) 으로 해도 상관없음
count = count+1; //count++ 라고 해도 됨
}//if end
}//for end
System.out.println(count + "개");
// 문2) 소문자 중에서 모음의 개수를 구하시오 - 모음 : 'a', 'e', 'i', 'o', 'u'
int s = 0; // 개수의 시작이 0이라서
for(char al = 'a'; al<='z'; al++){
/* if(al=='a'||al=='e'||al=='i'||al=='o'||al=='u'){
s=s+1; //= s++
}//if end
}//for end
System.out.println("모음의 개수 :" + "s");
*/
switch(al){
case'a' :
case'e' :
case'i' :
case'o' :
case'u' : s++;
}//switch end
}//for end
System.out.println("모음의 개수 :" + s + "개");
//문3) 알파벳을 한줄에 5개씩 출력하시오
// 카운트 변수를 5로 나누면 5개씩 반복된걸 알 수 있음 - 5의 배수인지를 알아보면 됨 + 5의 배수가 나오면 줄 바꿈 ln
/*
for(char alp = 'A'; alp<='Z'; alp++){
if(alp%5==4){
System.out.println(alp);
} else {System.out.print(alp);}
}//for end
System.out.println();
*/
int upper=0;
for(char alp = 'A'; alp<='Z'; alp++){ //대문자 A 아스키번호 65,
upper++;//upper가 0에서부터 1씩 커지는 것을 볼 수 있음 - 5의 배수가 되는 부분에서 엔터를 치면 됨
//System.out.print(upper);
System.out.print(alp);
if(upper%5==0){
System.out.println();
}//if end
}//for end
System.out.println(); //공백을 만들어주기 위해서 들어감
//문4) 1~100 중에서 짝수의 합, 홀수의 합을 각각 구하시오
int even = 0; //짝수의 합
int odd = 0; //홀수의 합
for(int a=1; a<=100; a++){
if(a%2==0){
even=even+a;
} else {
odd=odd+a; //
}//if end
} //for end
System.out.println("짝수의 합 :" + even);
System.out.println("홀수의 합 :" + odd);
//문5) 다음 식의 결과를 구하시오. 1-2+3-4+...+99-100 = ? (4번과 연관되어 있음)
//switch이론 : 한 번씩 번갈아가면서 수행
/*
int even1 = 0; //짝수의 합
int odd1 = 0; //홀수의 합
for(int a=1; a<=100; a++){
if(a%2==0){
even1=even1+a;
} else if (a%2!=0) {
odd1=odd1+a;
}//if end
} //for end
System.out.println(odd1-even1);
*/
boolean flag=false;
int hap=0;
for(int a=1; a<=100; a++){
if(flag){
hap=hap-a;
flag=false;
}else{
hap=hap+a;
flag=true;
}//if end
}//for end
System.out.println(hap);
//문6) 두 수 사이의 합을 구하시오. - 2에서부터 5까지의 숫자를 다 더하시오, 2+3+4+5 = 14 OR 5+4+3+2 = 14
// swap : 변수값을 서로 교환 (0528 Test03_Sort)
int start=5, end=1;
int sum=0;
if(start>end){ //swap
int tmp=start; //start 가 end를 지정해주면서 사라져버리기 때문에 미리 tmp가 start라고 정해준것
start=end; // 5= end
end=tmp; // 1= tmp - start = X
}//if end
for(int a=start; a<=end; a++){
sum=sum+a;
}//for end
System.out.println(sum);
//문7) 다음 식의 결과를 구하시오
/*
1 2 3 4 5 99
ㅡ - ㅡ + ㅡ - ㅡ +ㅡ . . . ㅡ = ?
2 3 4 5 6 100
→ (1/2)-(2/3)+(3/4) . . .
*/
/*
int a = 1;
double dd= a*1.0/(a+1)*1.0;
for(a=1;a<=99;a++){
if(a%2==0){
dd=dd*(-1.0);
}//if end
}//for end
System.out.println(dd);
int aa = 1;
double WW =aa/aa+1;//분자-1을 하거나 분모에 +1
double GG = (aa+1/aa+2)*-1;
for( aa=1; aa<=100; aa++){
if(aa%2!=0){
GG=(double)(GG+aa)*-1;
} else {
WW=(double)(WW+aa);
}//if end
} //for end
System.out.println(GG+WW);
*/
//<강사님 방법>
double h = 0.0;
boolean f= false;
for(int A=1; A<100; A++){
if(f){
h= h - (A/(double)(A+1));
f=false;
}else{
h=h+(A/(double)(A+1));
f=true;
}//if end
}//for end
System.out.println(h);
4. Continue 반복문
break : 반복문을 빠져나옴
continue : 반복문을 계속 실행
반복문과 함께 사용됨
for(int a=1; a<10; a++){
if(a==5){
break;
}//if end
System.out.print(a+" "); // 만약 a가 5가 나오면 break가 걸려서 빠져나가기 때문에 4까지 나옴
}//for end
System.out.println(); //13줄에서 ln이 없이 연달아 적히면서 줄바꿈이 실행되지 않아서 공백을 넣고 줄바꿈 실행
for(int a=1; a<10; a++){
if(a==5){
continue;
}//if end
System.out.print(a+" "); //1부터 증가가 되다가 5가 됐을 때 반복문을 다시 시작하게 함. 그래서 5일 때 유턴해서 9까지 다시 증가
}//for end
'JAVA' 카테고리의 다른 글
[JAVA] 반복문 (While / For문) / 배열 Array (0) | 2019.10.11 |
---|---|
[JAVA] 임시 비밀번호 생성 소스 (0) | 2019.09.25 |
[JAVA] Eclipse 단축키 (0) | 2019.08.29 |
[JAVA] if 문, switch문 (+ 연습문제) (0) | 2019.08.19 |
[JAVA] bit 연산자 (비트곱, 비트합), shift연산자, 보수 (0) | 2019.08.19 |
Comments