본문 바로가기
java

22.10.28 for, do-while, break, switch, 삼항연산자

by SoulMania 2023. 2. 12.

Ex04_doWhile.java
0.00MB
Ex04_while.java
0.00MB
Ex04_while2.java
0.00MB
Ex05_for.java
0.00MB

- Eclipse 단축키

컨트롤 + m 창최대최소
컨트롤 + d 한줄삭제

--------------------------------------------------------------------------------------------------
package ch0304;

/*for반복문
 for(초기;조건;증감식){
 //반복실행코드
 }
 */ 
public class Ex05_for {

public static void main(String[] args) {
/*for문을 활용하여 2~9단 출력하시오  //(교재 124p 참고)
 * 2*1=2
 * 
 * 3*1=3
 * :
 * 4*1=4
 *  
 * 5*1=5
 * :
 * 5*9=45
 */
// 2 ~ 9 출력, 
//강사님이 한 것. 
for(int d=2;d<=9;d++){
System.out.println(d+"단---");
int result3=0;
for(int i=1; i<=9;i++) {
result3=d*i;
System.out.println(d+"*"+i+"="+result3);
}//내부for
}//외부for
//result=dan*i;
System.out.println("-------------------"); //과정을 굳이 보여주지 않아도 된다.
   
System.out.println("--------------");


//이건 내가 한 것.
int result2 = 0; //계산결과를 저장하기 위한 변수
for(int i=2;i<=9;i++){
for(int j=1;j<=9;j++) {
result2=i*j;
System.out.println(i+"*"+j+"="+result2); //과정을 굳이 보여주지 않아도 된다.
}
//result=dan*i;
System.out.println("-------------------"); //과정을 굳이 보여주지 않아도 된다.
   
}//for 종료
System.out.println("--------------");



/*for문을 활용하여 5단 출력하시오
 * 5*1=5
 * 5*2=10
 * :
 * 5*9=45
 */
// 1 ~ 9 출력
int dan = 5; //dan에 해당하는 값을 저장하기 위한 변수
int result = 0; //계산결과를 저장하기 위한 변수
for(int i=1;i<=9;i++){
result=dan*i;
System.out.println(dan+"*"+i+"="+result); //과정을 굳이 보여주지 않아도 된다.
   
}//for 종료
System.out.println("--------------");





//1~15 합 출력  (교재 p123 참고)
//1~5 합 출력
//0+1
//0은 sum, 1은 i 이므로 sum+i
//1+2의 합
//1+2의 합 +3
//1+2+3의 합 +4
//1+2+3+4의 합 +5
//1+2+3+4+5의 합 결과를 출력

//총 합을 저장하기 위한 변수선언 및 초기화
int sum = 0; //초기값 생략가능
for(int i=1;i<=15;i++){
 //반복실행코드
//sum=sum+i; //대입연산자
sum+=i; //위와 같은 형식 대입연산자
//0+1의 합은 1이고 sum에 저장
//1+2의 합은 3이고 sum에 저장
//3+3의 합은 6이고 sum에 저장
//6+4의 합은 10이고 sum에 저장
//10+5의 합은 15이고 sum에 저장
System.out.println("i가"+i+"일때의 sum ="+sum); //과정을 굳이 보여주지 않아도 된다.
   
}//for 종료
System.out.println("합의 결과 = "+sum);




 
 
}//main끝

}//class끝



-----------------------------------------------------------------------------------------------


package ch0304;

public class Ex04_while2 {

public static void main(String[] args) {

int i=1;
int dan=5;
int result = 0;


while(dan<10) {
result = dan*i;
System.out.println(dan + " * " + i + " = " + result);
i++;
if(i==10) {
i=1;
dan++;
System.out.println("-------------");
}
}
}
}



---------------------------------------------------------------------------------------------
package ch0304;

public class Ex04_doWhile {
// do ~ while (교재 p.128)
/*
- 무조건 중괄호{} 블록을 한 번 실행한 후, 조건 검사해 반복 결정
 */
public static void main(String[] args) {

int i = 10;
do {
// 반복실행 코드
System.out.println(i);
}while(i>10);

}
}




-------------------------------------------------------------------------------------------------
package ch0304;

/*
 break문(p.130~132)
 * 반복문이 중첩된 경우
 * 반복문이 중첩되어 있을 경우 break; 문은 가장 가까운 반복문 종료
 * 
 * continue문(p.132~133)
 * for문, while문, do-while문에서 사용
 * for문, 증감식으로 이동
 * while문, do-while문:조건식으로 이동
 */


public class Ex06_break_continue {

public static void main(String[] args) {
/*
int a = 10;
int b = 2;
int result1 = a/b;
double result2 = a/b;
double result3 = (double)a/b; // 변수 a는 double형으로 강제형변환
// '/'연산을 하기전에 연산식 자동형변환에의해 int 'b'는 자동으로 double형으로 변환
//산술연산자(교재 p.76참고)
System.out.println("a + b = " + (a+b));
System.out.println("a - b = " + (a-b));
System.out.println("a * b = " + (a*b));
System.out.println("a / b = " + result1);
System.out.println("a / b = " + result2); // '/'몫 구하는 연산자
System.out.println("a / b = " + result3);
System.out.println("a % b = " + (a%b)); // '%' 나머지 구하는 연산자


int i = 1;
while(i<11) {
  // 홀수일경우 출력 -> i%2!=0, i%2==1, !(i%2==0)
if(i%2==0){ // 짝수일경우 출력 -> 변수 i를 2로 나눈 나머지가 0인 수
System.out.println("i = " + i);
}
i++;
}*/

int i = 1;

while(i<11) {
System.out.println(i);
if(i==5) {
System.out.println("if안 : " + i);
//break; //반복문 완전 종료

//continue;  //무한루프 빠진다.
}
System.out.println("if밖, while안");
i++;
}
}
}


-------------------------------------------------------------------------------------------------------------------------------

package ch0304;

/*Switch문(p.116~119)
 변수나 연산식의 값에 따라 실행문 선택할 때 사용
 int a=1;
 if(a<3){
 //조건만족시 실행코드
  }
  
  int a=1;
  switch(a){    ==연산만 가능하다는것이 단점
  case 값1:  // 실행코드 break;
  case 값2:  // 실행코드 break;
  case 값n:  // 실행코드 break;
  default:  // 실행코드 break;
 }
 */


//p533 Math, random 수학 관련 클래스 표 참조 랜덤 스위치문이랑 합쳐서 번호뽑기문 만들수 있음 p117~118
//-> (int)(Math.random()*n)+start 가지수 곱하기 시작 숫자 더하기 ㅔ535


//Math 클래스 (예제는 p.533~536 참고) 
//수학 계산에 사용할 수 있는 정적 메소드 제공
//Math.random()는 0.0이상 1.0미만의 double타입의 난수 발생


//교재p536참고
//start이상~ (start+n)미만의 범위에 소가는 정수 얻는 연산식
//(int)(Math.random()*n)+start;

//예) 주사위 1~6 int 변수=(int)(Math.random()*6)+1;
//예) 로또번호 1~45 int 변수=(int)(Math.random()*45)+1;

public class Ex07_switch {

public static void main(String[] args) {

for(int cnt=1; cnt<7; cnt++) {//6번 반복
int r1 = (int)(Math.random()*45)+1; //double형을 int형으로 강제 형변환
System.out.println("난수정수 6개 =" + r1); //->>중복값이 나와서 로또번호라고 할수는 없어서 그냥 난수 정수

}
System.out.println();


for(int cnt=1; cnt<7; cnt++) {//6번 반복
int r1 = (int)Math.random(); //double형을 int형으로 강제 형변환
System.out.println("int타입 r1=" + r1);

}
System.out.println();

for(int cnt=1; cnt<7; cnt++) {//6번 반복
double r1 = Math.random();
System.out.println("double타입 r1=" + r1);


}
float r2 = (float) Math.random(); //강제형변환 
System.out.println("float타입 r2=" + r2);

System.out.println();

//봄:3,4,5 ,  여름:6,7,8 , 가을:9,10 , 겨울:11,12,1,2  
//int month = 9;
String season = ""; //스트링 초기값
int month=(int)(Math.random()*12)+1; //난수 발생기로 변형 랜덤값으로 계절 출력
switch(month){   // ==연산만 가능하다는것이 단점, 제시된 case에 없으면 default 출력
// case 3: System.out.println("봄"); break;
// case 4: System.out.println("봄"); break;
// case 5: System.out.println("봄"); break;
// case 6: System.out.println("여름"); break;
// case 7: System.out.println("여름"); break;
// case 8: System.out.println("여름"); break;
// case 9: System.out.println("가을"); break;
// case 10: System.out.println("가을"); break;
// case 11: System.out.println("겨울"); break;
// case 12: System.out.println("겨울"); break;
// case 1: System.out.println("겨울"); break;
// case 2: System.out.println("겨울"); break;
// default : System.out.println("default");  
// 실행코드 break; 브레이크가 없으면 출력된 시점부터 아래로 순차 출력된다. 10월에 브레이크 없애면 11월출력하고 11월 브레이크에서 빠져나온다. 
//또는 케이스 9의 내용이 아예 없으면 똑같이 아래 케이스로 순차 출력 따라서 아래처럼 간소화 가능
//인트형태 말고 char 형태인 문자도 가능하고 스트링문자열도 가능 (교재118p~119p)원래 자바 6버전에서는  string은 안됐었음

// case 3:
// case 4: 
// case 5: System.out.println("봄"); break;
// case 6: 
// case 7:
// case 8: System.out.println("여름"); break;
// case 9: 
// case 10: System.out.println("가을"); break;
// case 11:
// case 12:
// case 1: 
// case 2: System.out.println("겨울"); break;
// default : System.out.println("default");  


case 3:
case 4: 
case 5: season="봄"; break;
case 6: 
case 7:
case 8: season="여름"; break;
case 9: 
case 10: season="가을"; break;
case 11:
case 12:
case 1: 
case 2: season="겨울"; break;
default : System.out.println("default");  

 } //이렇게 해도 동일한 값이다.
//System.out.println("switch밖");
System.out.println(month+"월은 "+season);

}

}


-------------------------------------------------------------------------------------------------------------------------------


package ch0304;


/*삼항 연산자란?(교재 p100~101 참고) 
세 개의 피연산자를 필요로 하는 연산자
앞의 조건식 결과에 따라 콜론 앞 뒤의 피연산자 선택 -> 조건 연산식 
 
 
 (조건)?  조건만족실행코드  : 조건x실행코드       --> 기본 문법 형태
 타입 변수=(조건)?  조건만족실행코드  : 조건x실행코드;    --> 소스코드에 적용됐을때 형태
 
 
 if(조건){
 //조건만족실행코드
  }else{
  //조건x실행코드
   }
 


비교연산자
a==b a는 b와 일치(동일하다. 같다)
a!=b a는 b와 불일치(동일하지않다. 같지않다.)
a>b a는 b보다 크다. 초과
a>=b a는 b보다 크거나 같다.이상         a=>b는 틀린문법
a<b a는 b보다 작다.미만
a<=b a는 b보다 작거나 같다.이하
*/

public class Ex08_p100 {

public static void main(String[] args) {

int score = 100;
char grade=' ';
//점수가 95점 이상이면 'A' 그 외는 'B'
//타입 변수=(조건)?  조건만족실행코드  : 조건x실행코드;    --> 소스코드에 적용됐을때 형태
grade=(score >= 95)?  'A'  : 'B';   // --> 소스코드에 적용됐을때 형태
System.out.println(score+"저의 학점은 "+grade);

System.out.println("-----------------------------------------------------");
if(score >= 95){
//조건만족실행코드
// System.out.println('A');
 grade='A';
 }else{
//조건만족x실행코드
// System.out.println('B');
 grade='B';
 }
System.out.println(score+"저의 학점은 "+grade);

}

}