ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] for문
    언어/JAVA 2022. 9. 7. 17:34

    -반복 실행 명령문

    -()안의 반복 횟수를 지정하는 문구를 양식에 맞춰서 입력해 지정된 횟수 만큼 {}안의 명령이 실행됨

    -괄호안에 ; 으로 구분하여 세가지 내용을 기술해줌

    -작성되는 세가지 내용은 반복횟수를 제어할 구성요소들로 채워짐

    -반복되는 횟수는 특정 변수에 의해 제어됨

    -for문에 속한 반복대상 명령이 하나라면 중괄호 생략 가능

    ​for( ①; ②; ③;){}
    -①: 반복을 제어할 변수의 최초값 대입 또는 변수의 생성영역임
    -②: 다음 반복을 계속할지 안할지에 대한 관계[비교]연산식 결과가 true이면 반복을 계속하고 false이면 반복을 멈추어 for영역을 빠져나옴
    -③: 반복 제어 변수의 증감 연산을 기술
    int i;
    for(i=1; i<=10; i++) {
    System.out.println("programming");
    }
    // ①: i변수가 1을 최초로 갖고 반복 시작
    // ②: i값이 10보다 작거나 같은 경우 현재의 반복실행을 진행함
    // ③: 반복이 특정횟수를 실행하고 끝날 수 있게 매반복시마다 계산할  
          i변수의 증감연산을 실행함
    
    // 1증가 i++, 1감소 i--, 2증가 i=1+2(i+=2), 2감소 i=i-2(i-=2)
    // 매 반복마다 i++이 실행되서 i<=10이 false가 되는 순간 반복 멈춤

     

    변수 수명

    -자신을 생성한 영역 {}이 끝나면 변수도 소멸됨

    -for문 안 변수는 반복실행 후 제어변수를 더이상 사용치 않을 때 사용함

    -반복 실행 후 반복제어 변수의 값이 필요하다면 for문 안쪽에 변수를 선언하면 안되고 반드시 반복 실행문 위에 별도로 선언 후 사용하여야 됨


    1부터 10까지의 합

    int sum=0;
    for(int i=1; i<=10; i++) {
    	sum+=i;
    }
    System.out.println(sum);

     

    구구단

    Scanner sc=new Scanner(System.in);
    int dan;
    System.out.printf("dan: "); // 입력한 숫자의 구구단을 출력
    dan=sc.nextInt();
    for(int i=1; i<10; i++) {
    	System.out.printf("%d*%d=%d\n",dan,i,dan*i);
    }

     

    팩토리얼

    Scanner sc=new Scanner(System.in);
    System.out.printf("factorial: ");
    int num=sc.nextInt(); // 팩토리얼 계산할 수 입력
    int fac=1;
    for(int i=1; i<=num; i++) {
    	fac=fac*i;
    }
    System.out.println(fac);
    Scanner sc=new Scanner(System.in);
    System.out.printf("factorial: ");
    int num=sc.nextInt();		
    System.out.printf("%d! = ", num);
    int fac=1;
    for(int i=num; i>1; i--) {
    	fac=fac*i;
    	System.out.printf("%d*",i);
    }
    System.out.printf("%d =%d\n",1, fac);

     

    요일 구하기

    Scanner sc=new Scanner(System.in);
    System.out.printf("year: ");
    int y=sc.nextInt();
    System.out.printf("month: ");
    int m=sc.nextInt();
    System.out.printf("day: ");
    int d=sc.nextInt();
    // 1년 1월 1일이 월요일
    // 입력받은 년도의 전년도까지 지나온 날짜수 합산
    // 	-2022년을 입력했다고 가정했을 때, 2021년까지 지나온 날짜수를 계산
    // 	-365*2021+2021년까지 있었던 윤년의 횟수
    int days=365*(y-1);
    for(int i=1; i<y; i++) {
    	if((i%4==0)&&(i%100!=0)||(i%400==0)) days++;
    }
    switch(m) {
    	case 12: days=days+30;
    	case 11: days=days+31;
    	case 10: days=days+30;
    	case 9: days=days+31;
    	case 8: days=days+31;
    	case 7: days=days+30;
    	case 6: days=days+31;
    	case 5: days=days+30;
    	case 4: days=days+31;
    	case 3: // 입력한 년도(y)가 윤년이라면 2월을 29일로
    		if((y%4==0)&&(y%100!=0)||(y%400==0)) days=days+29;
    		else days=days+28;
    	case 2: days=days+31;
    	case 1: days=days+0; 
    }
    days=days+d;
    int t=days%7;
    switch(t) { 
    	case 1: System.out.println("mon"); break;
    	case 2: System.out.println("tue"); break;
    	case 3: System.out.println("wed"); break;
    	case 4: System.out.println("thu"); break;
    	case 5: System.out.println("fri"); break;
    	case 6: System.out.println("sat"); break;
    	case 0: System.out.println("sun"); break;
    }

     

    10개의 정수를 입력받아 그들의 합계와 평균을 출력

    // 10개를 입력하는 중간에 종료를 원하면 0을 입력
    // 입력을 종료하면 최종 합계를 추력
    
    // 입력양식
    // 입력 1: xx
    // 입력 2: xx
    // ...
    // 입력 10: xx
    
    // 출력양식
    // 입력한 정수들의 합계: xxx
    // 입력한 정수들의 평균: xx.x
    
    Scanner sc=new Scanner(System.in);
    int sum=0, i,num;
    for(i=1; i<=10; i++) {
    	num=sc.nextInt();
    	sum+=num;
    	if(num==0) break;
    }
    double avg=sum/(double)(i-1);
    System.out.println((int)(avg*10)/10);;

     

    최대공약수

    Scanner sc=new Scanner(System.in);
    System.out.printf("first integer: ");
    int num1=sc.nextInt();
    System.out.printf("second integer: ");
    int num2=sc.nextInt();
    
    int i, big;
    if(num1<num2) big=num1;
    else big=num2;
    
    int m=0; // 최대공약수 변수
    for(i=1; i<=big; i++) {
    	if(num1%i==0&&(num2%i==0)) 
    		System.out.printf("%d ",i); // 공약수 출력
    		m=i;
    }
    System.out.printf("\n%d",m); // 최대공약수 출력

    continue

    -현재 반복실행의 명령을 다 실행하기 전에 현재 점에서 중단 다음 반복으로 이동

    Scanner sc=new Scanner(System.in);
    int num=sc.nextInt();
    int sum=0;
    for(int i=1; i<=num; i++) {
    	if(i%2==1) continue; // 홀수일 경우 패슨 
    	sum+=i;
    }
    System.out.println(sum);

    '언어 > JAVA' 카테고리의 다른 글

    [JAVA] Class  (0) 2022.09.07
    [JAVA] Overloading  (0) 2022.09.07
    [JAVA] Method  (0) 2022.09.07
    [JAVA] 삼항연산자(Ternary operator)  (0) 2022.09.07
    [JAVA] switch문  (0) 2022.09.07

    댓글

Designed by Tistory.