✿∘˚˳°∘°

5일차 : 제어문 본문

국비수업/JAVA

5일차 : 제어문

_HYE_ 2022. 12. 6. 00:33

2022/12/02

 

1. 조건문

: 조건에 따라서 수행되는 코드가 달라지는 구문

: 조건문의 종류 - if / if ~ else / if ~ else if / switch

 

1 - 1 ) if

: 조건식의 결과값이 true면 { } 안의 내용을 실행하고 false면 실행하지 않는 구문

	//if문 기본
	public void test1() {
		Scanner sc = new Scanner(System.in);
		//ctrl+shift+o : 자동임포트(단,다른클래스에서 사용하고 있을 경우 패키지클래스확인)
		System.out.print("숫자 10을 입력해보세요 : ");
		int num = sc.nextInt();
		System.out.println("입력한 숫자 : "+num);
		if(num == 10) {
			System.out.println("잘했어요~!");
		}
		System.out.println("끝");
	}
	
	//if문 여러개
	public void exam1() {
		Scanner sc = new Scanner(System.in);
		System.out.println("====== 숫자 구별 프로그램 =======");
		System.out.print("임의의 정수를 입력하세요 : ");
		int num = sc.nextInt();
		if(num>0) {
			System.out.println("당신이 입력한 수 [ "+num+" ]은(는) 양수입니다.");
		}
		if(num==0) {
			System.out.println("당신이 입력한 수 [ "+num+" ]은(는) 0입니다.");
		}
		if(num<0) {
			System.out.println("당신이 입력한 수 [ "+num+" ]은(는) 음수입니다.");
		}		
	}
	
	//if문을 이용하여 두수 비교하는 프로그램 만들기
	public void exam2() {		
		Scanner sc = new Scanner(System.in);
		System.out.println("====== 두수 비교 프로그램 =======");
		System.out.print("첫번째 정수를 입력하세요 : ");
		int num1 = sc.nextInt();
		System.out.print("두번째 정수를 입력하세요 : ");
		int num2 = sc.nextInt();
		if(num1<num2) {
			System.out.println(num1+"<"+num2);
			System.out.println("두번째 수가 더 큽니다.");
		}
		if(num1==num2) {
			System.out.println(num1+"="+num2);
			System.out.println("두 수가 같습니다.");
		}
		if(num1>num2) {
			System.out.println(num1+">"+num2);
			System.out.println("첫번째 수가 더 큽니다.");
		}		
	}
	
	//연산자와 정수를 입력받아 연산하는 계산기 프로그램(연산자-문자)
	public void exam3() {
		Scanner sc = new Scanner(System.in);
		System.out.println("====== 계산기 프로그램 ======");
		System.out.print("연산자를 입력하세요(+,-,*/) : ");
		char op = sc.next().charAt(0);
		System.out.print("첫번째 정수를 입력하세요 : ");
		int num1 = sc.nextInt();
		System.out.print("두번째 정수를 입력하세요 : ");
		int num2 = sc.nextInt();
		/*'1'+'1'=98*/
		
		if(op == '+') {//op==43(아스키코드)
			//System.out.println(num1+op+num2+"="+(num1+num2));
			//문자 op가 정수형으로 형변환이 되어 계산이 되어버림(아스키코드+정수)
			//
			System.out.println(num1+"+"+num2+"="+(num1+num2));
		/*	System.out.println(num1+""+op+""+num2+"="+(num1+num2));
			System.out.printf("%d %c %d = %d", num1, op, num2, num1+num2); */		
		}
		if(op == '-') {//op==45
			System.out.println(num1+"-"+num2+"="+(num1-num2));
		}
		if(op == '*') {//op==42
			System.out.println(num1+"*"+num2+"="+(num1*num2));
		}
		if(op == '/') {//op==47
			System.out.printf("%d %c %d = %.6f", num1, op, num2, (double)num1/num2);
		}
		
	}

	//연산자와 정수를 입력받아 연산하는 계산기 프로그램(연산자-문자열)
	public void exam33() {
		Scanner sc = new Scanner(System.in);
		//연산자를 문자열로 받기
		System.out.println("====== 계산기 프로그램 ======");
		
		System.out.print("연산자 입력(+,-,*,/) : ");
		String oper = sc.next();
		System.out.print("첫번째 정수 입력 : ");
		int num1 = sc.nextInt();
		System.out.print("두번째 정수 입력 : ");
		int num2 = sc.nextInt();
		
		//참조변수는 내부에 주소값을 가지고있고 그 주소값이 
		if(oper.equals("+")) { //.equals를 통해 주소가 아닌 내부데이터를 비교 "+".equals(oper)
			//oper == "+" :실행x 참조형 변수는 직접비교x 내부의 데이터를 비교해야한다.
			System.out.println(num1+oper+num2+"="+(num1+num2));
			//exam3(){}의 op는 문자타입이었기 때문에 중간에 문자열("")을 넣거나 printf를 사용해야햇지만
			//exam33(){}의 oper는 이미 문자열타입이기 때문에 그냥 사용해도 문자열연산이 된다.
		}
		if(oper.equals("-")) {
			System.out.println(num1+oper+num2+"="+(num1-num2));
		}
		if(oper.equals("*")) {
			System.out.println(num1+oper+num2+"="+(num1*num2));
		}
		if("/".equals(oper)) {
			System.out.println(num1+oper+num2+"="+((double)num1/num2));
		}
		
		System.out.println("끝!");		
	}

 

1 - 2 ) if ~ else

	//홀수 짝수 구분프로그램
	public void test2() {
		//입력받은 수가 홀수면 홀수! 출력, 짝수면 짝수! if문 사용
		//짝수 : 2로 나눴을 때 나누어 떨어지는 수, 2로 나눈 나머지가 0
		
		//if~else : 경의 수가 두가지인 경우 사용
		//if(조건식) 조건식을 체크하고 true일경우 if문을 실행하고 false일경우 바로 else를 실행
		//if문을 계속쓰면 계속 검사를 한다(검사를 n번하냐 한번하냐의 차이)
		Scanner sc = new Scanner(System.in);
		System.out.print("정수를 입력하세요 : ");
		int num = sc.nextInt();
		if(num%2 == 0) {
			System.out.println("짝수!");
		} else { 
			System.out.println("홀수!");
		}
	}

 

1 - 3 ) if~ else if

	//if~else if문
	public void test3() {
		Scanner sc = new Scanner(System.in);
		System.out.print("정수를 입력하세요 : ");
		int num = sc.nextInt();
		//상위if의 조건식이 true면 다른조건식을 검사하지않고 끝이난다.
		//조건식을 모두 검사하고 싶을경우엔 if문만 계속사용해야함.
		//조건검사를 할 때 범위가 좁은걸 상위로 올려주어야한다.
		if(num > 1000) { //num>10이 상위로 오면 2000을 입력해도 10이상만 출력하고 나머지검사x
			System.out.println("1000보다 큰 수 입니다.");
		}else if(num > 100) {
			System.out.println("100보다 큰 수 입니다.");
		}else if(num > 10) {
			System.out.println("10보다 큰 수 입니다.");
		}else {
			System.out.println("10 이하입니다.");
		}		
	}

 

1 - 4 ) 조건문 실습

	//입장인원이 맞으면 금액계산, 틀리면 인원이 맞지 않습니다 출력
	public void exam4() {		
		Scanner sc = new Scanner(System.in);
		int adultPay = 15000; //금액을 변수로 만들어놓으면 나중에 수정이 용이하기 때문에
		int kidPay = 5000;    // 변동(할인, 인상 등)가능성이 있는 요소는 변수로 선언하는편이 좋다.
		
		System.out.println("======= 놀이공원 프로그램 =======");
		System.out.print("입장하실 총 인원은 몇명입니까? : ");
		int total = sc.nextInt();
		System.out.print("어른은 몇명입니까?(1인당 15,000원) : ");
		int adult = sc.nextInt();
		System.out.print("아이는 몇명입니까?(1인당 5,000원) : ");
		int kid = sc.nextInt();
		
		if( total == adult+kid ) {
			System.out.println("지불하실 금액은 "+((adult*adultPay)+(kid*kidPay))+"원 입니다.");
		}else {
			System.out.println("인원수가 맞지 않습니다.");
		}		
	}

	//대소문자 변환 / 잘못입력한 경우 영문자 입력메세지 출력
	public void exam5() {
		Scanner sc = new Scanner(System.in);
		System.out.println("======= 대/소문자 변환 프로그램 =======");
		System.out.print("문자 입력 : "); 
		char ch = sc.next().charAt(0);
		//대문자 범위 65 ~ 90 -> 65 <= ch <= 90
		//소문자 범위 97 ~ 122 -> 97 <= ch <= 122
		//1 <= ch(50) <= 99(x) 컴퓨터는 앞연산을 먼저 하므로 true <= 99가 된다 
		//ch >= 1 && ch <= 99(o) 논리연산자를 사용해주어야함.
		System.out.println("====== 결과 ======");
		if( ch >= 'a' && ch <= 'z' ) {//연산시 정수로 변환되므로 숫자가아닌 'a'로 적어도 된다.
			System.out.println("소문자를 입력 하였습니다.");
			System.out.println("대문자로 변환 : "+(char)(ch^32));
			//문자^정수로 연산하면 정수로 변환되기때문에 형변환을 해줘야함
		}else if(ch >= 'A' && ch <= 'Z') {
			System.out.println("대문자를 입력 하였습니다.");
			System.out.println("소문자로 변환 : "+(char)(ch^32));
		}else{
			System.out.println("잘못입력하였습니다. 영문자를 입력해주세요.");
		}				
	}

	//정수를 입력하여 3의배수/4의배수인지 확인하는 프로그램	
	public void exam6() {
		Scanner sc = new Scanner(System.in);
		System.out.print("정수 입력 : ");
		int num = sc.nextInt();
		System.out.println("======= 결과 =======");
		
		if( num != 0 ) {
			if(num%3 == 0 && num%4 == 0) {
				System.out.println("["+num+"]은(는) 3의 배수이면서 4의 배수입니다.");
			}else if(num%3 == 0) {
				System.out.println("["+num+"]은(는) 3의 배수입니다.");
			}else if(num%4 == 0) {
				System.out.println("["+num+"]은(는) 4의 배수입니다.");
			}else {
				System.out.println("["+num+"]은(는) 3의 배수도 4의 배수도 아닙니다.");
			}
		}
		else System.out.println("["+num+"]은(는) 3의 배수도 4의 배수도 아닙니다.");
	}

 

1 - 5 ) switch

	//switch~case문
	public void test1() {
		Scanner sc = new Scanner(System.in);
		System.out.print("1~3 사이 정수를 입력하세요 : ");
		int num = sc.nextInt();
	 /*	if(num == 1) { 범위값이없다 -> 순서상관x
			System.out.println("1입력!");
		}else if(num == 2) {
			System.out.println("2입력!");
		}else if(num == 3) {
			System.out.println("3입력!");
		}else {
			System.out.println("잘못입력!");
		} */
		//위 코드를 switch문으로 바꾸기
		switch(num) {
		case 1 :
			System.out.println("1입력!");
			break;//break가 없으면 true이후의 case문도 실행된다.(break를 만날때까지 실행)
		case 2 :
			System.out.println("2입력@");
			break;
		case 3 :
			System.out.println("3입력#");
			break;
		default :
			System.out.println("잘못입력!");
		}			
	}
	
	//월을 입력하면 일수를 출력해주는 프로그램(switch~case)
	public void test2() {
		Scanner sc = new Scanner(System.in);
		System.out.print("일수를 알고싶은 월을 입력하세요 : ");
		int month = sc.nextInt();
		
		switch(month) { //순서상관x
		case 1 : case 3 : case 5 : case 7 :
		case 8 : case 10 : case 12 :
			System.out.println("31일");
			break; //break를 만나야 실행이 종료된다는 특성을 이용하여 이렇게 사용가능.
		
		case 4 : //순서는 상관없음
			System.out.println("30일");
			break;
		case 6 :
			System.out.println("30일");
			break;
		case 9 :
			System.out.println("30일");
			break;
		case 11 :
			System.out.println("30일");
			break;
		case 2 :
			System.out.println("28일");
			break;
		
		default : //else처럼 안적어도 된다
			System.out.println("잘못입력하셨습니다!");
			
		}
	}
	
	//switch~case문
	public void test3() {
		Scanner sc = new Scanner(System.in);
		System.out.println("문자열 입력 : ");
		String str = sc.next();
		/*
		if(str.equals("a")) { //str == "a"를 입력하면 마지막 cccc가 출력된다
			System.out.println("aaaa");
		}else if(str.equals("b")){
			System.out.println("bbbb");
		}else {
			System.out.println("cccc");
		}
		*/
		//switch로 문자열을 처리하는 기능은 자바1.7에 추가된 기능, 자바하위버전에서 구동 시 에러
		switch(str) {
		case "a" :
			System.out.println("aaaa");
			break;
		case "b" :
			System.out.println("bbbb");
			break;
		default :
			System.out.println("cccc");
			break;
		}
	}

 

2. 반복문

: 사용자가 원하는 만큼 명령들을 여러 번 반복해서 실행하는 구문

: 반복문의 종류 - for / while / do ~ while

 

2 - 1 ) for

가장 보편적인 반복문으로 가독성이 높고, 초기, 조건, 증감문을 한번에 선언해서 사용

for문 표현식 - for(초기문;조건문;증감문){ 실행문; }

	//for문 기본
	public void test1() {
		//for(초기;조건;증감)
		/*
		 초기 : 반복횟수를 위한 변수 선언 및 초기화
		 조건 : 반복횟수 조절
		 증감 : 초기에서 선언된 변수를 증가 또는 감소
		 */
		//System.out.println("안녕하세요"); 5번출력

		for(int i=0; i<3; i++) {
			System.out.println(i+" : 안녕하세요");
		}
		/* [ for문 실행순서 ]
		   1. int i선언 / i = 0대입
		   2. i < 5 / true : 실행
		   3. i++
		   4. i = 1대입
		   5. i < 5 / true : 실행
		   (반복)
		   n. i = 5
		   m. i < 5 / false : 반복문에서 나감 */
	}

	//정수를 입력받아 그 수 만큼 출력하는 프로그램
	public void test2() {
		Scanner sc = new Scanner(System.in);
		System.out.print("몇번 출력하시겠습니까 ? ");
		int count = sc.nextInt();
		
		for(int i=0; i<count; i++) {
			System.out.println("안녕하세요");
		}
	}
	
	//구구단 2단
	public void test3() {
		//구구단 2단 출력;
		for(int i=1; i<10; i++) {
			System.out.println("2*"+i+"="+(2*i));
			//System.out.printg("%d X %d = %d \n", 2, i, 2*i);
		}
	}

	//입력받은 단 출력
	public void test4() {
		Scanner sc = new Scanner(System.in);
		System.out.print("몇단을 출력하시겠습니까? ");
		int dan = sc.nextInt();
		System.out.println(dan+"단 입니다.");
		
		for(int i=0; i<9; i++) {
			System.out.printf("%d X %d = %d \n", dan, i+1, dan*(i+1));
		}
	}

	//반복문으로 5번 반복하여 입력받아 그합을 출력하는 프로그램(방법1)
	public void test5() {
		Scanner sc = new Scanner(System.in);
		int total = 0;//선언만 하면 안에 쓰레기가 들어있기때문에 0으로 초기화해줘야한다.
		
		for(int i=0; i<5; i++) {
			System.out.print("정수 값을 입력하시오 : ");
			 int num = sc.nextInt();	
			//동일한 변수를 5번 선언했을 때는 에러가 발생하는데, 반복문에서는 에러가 발생하지 않는이유
			//생성한 변수는 그 변수를 감싸고있는 가장 가까운 중괄호 범위까지만
			//num이라는 변수는 for문이내에서 선언되었으므로 for문안에서만 사용가능한 것
			//그렇기 때문에 for문 밖에서 사용하려면 사용x
			total += num;//total = total + num;
		}
		System.out.println("입력한 5개 정수의 합 : "+total);
	}

	//반복문으로 5번 반복하여 입력받아 그합을 출력하는 프로그램(방법2)
	public void test55() {
		Scanner sc = new Scanner(System.in);
		int num = 1000;//for문이 실행될 때 입력을 받으면 변경되므로 값을 넣어 초기화해도 된다.
		
		for(int i=0; i<5; i++) {
			System.out.print("정수 값을 입력하시오 : ");
			num += sc.nextInt();				
		}
		System.out.println("입력한 5개 정수의 합 : "+num);
	}

	//정수 두개를 입력받고 두 수사이의 모든 수의 합을 구하는 프로그램(무조건 첫번째 수가 더 작은경우에만 가능)
	public void test6() {
		Scanner sc = new Scanner(System.in);
		System.out.print("첫번째 수 입력 : ");
		int num1 = sc.nextInt();
		System.out.print("두번째 수 입력 : ");
		int num2 = sc.nextInt();
		int total = 0;	
		
		for(int i=num1; i<num2+1; i++) {
			total += i;
		}
		System.out.printf("%d ~ %d의 정수의 합 : %d", num1, num2, total);
	}

	//정수 두개를 입력받고 두 수사이의 모든 수의 합을 구하는 프로그램(if문)
	public void test66() {
		//첫번째 정수가 더크면? if~else if문?
		Scanner sc = new Scanner(System.in);
		System.out.print("첫번째 수 입력 : ");
		int num1 = sc.nextInt();
		System.out.print("두번째 수 입력 : ");
		int num2 = sc.nextInt();
		int total = 0;	
		
		if(num1<num2) {
			for(int i=num1; i<num2+1; i++) {
				total += i;
			}	
		}else if(num1>num2){
			for(int i=num2; i<num1+1; i++) {
				total += i;
			}
		}
		System.out.printf("%d ~ %d의 정수의 합 : %d", num1, num2, total);
	}

	//수를 입력받고 1부터 입력받은 수 중 짝수들의 합을 수하는 프로그램
	public void test7() {
		
		Scanner sc = new Scanner(System.in);
		System.out.print("숫자 입력 : ");
		int num = sc.nextInt();
		//만약 입력한 숫자가 100이라면
		//2,4,6,8,10...,100 숫자를 모두 더한 결과
		int total = 0;
		
	   /* 
	   for(int i = 0; i<num+1; i++){
		 		total += i;
		 		i++; //i를2씩증가시켜 짝수만 구동되게 하는 것
		 	} for문 내부에 i++;코드를 추가하여 i를2씩증가시켜 짝수만 구동되게 하는 것	  
	   */

		/* 
	 	for(int i = 0; i<num+1; i=i+2){
			 		total += i;
			} 증감식을 변형시켜 짝수만 구동되게 하는 것  
		*/
		
		for(int i=0; i<num+1; i++) {
			if(i%2==0) {
				total += i;
			}			 
		}
		System.out.print("짝수들의 합은 : "+total);
	}

- 중첩 for문 실습문제

	//중첩for문을 이용한 구구단 전체 출력(가로)
	public void gugudan1() {
		
		for(int i=2; i<10; i++){
			for(int j=0; j<9; j++) {
				System.out.printf("%d X %d = %d\t", i, j+1, i*(j+1));
			}
			System.out.println();
		}
	}
	
	//중첩for문을 이용한 구구단 전체 출력(세로)
	public void gugudan2() {
		
		for(int i=0; i<9; i++){//세로
			for(int j=2; j<10; j++) {//가로
				System.out.printf("%d X %d = %d\t", j, i+1, j*(i+1));
			}
			System.out.println();
		}
	}

/*   					   
	System.out.print(" ");      /)/)     (\(\   
	System.out.print("*");     (.. )     ( ..) 
	System.out.println();      (____)3 c(____)  
 	를 이용해서 별 찍기
 */
	public void star1() {
		System.out.println("Q1.");
		for(int i=0; i<5; i++) {
			System.out.print("*");
		}
	}
	
	public void star2() {
		System.out.println("Q2.");
		for(int i=0; i<5; i++){
			System.out.print("*");
			System.out.println();
		}
	}
	
	public void star3() {
		System.out.println("Q3.");
		for(int j=0; j<5; j++) {
			for(int i=0; i<5; i++){
				System.out.print("*");
			}
		System.out.println();
		}
	}
	
	public void star4() {
		System.out.println("Q4.");
		for(int i=0;i<5;i++) {
			for(int j=0;j<5;j++) {
				System.out.print(i+1);
			}
			System.out.println();
		}
	}
	
	public void star5() {
		System.out.println("Q5.");
		for(int i=0; i<5; i++) {
			for(int j=0; j<5; j++) {
				System.out.print(j+1);
			}
			System.out.println();
		}
	}
	
	public void star6() {
		System.out.println("Q6.");
		for(int i=0; i<5; i++) {
			for(int j=0; j<5; j++) {
				System.out.print(j+i+1);//0+0+1 0+1+1 0+2+1 ...0+4+1
			}							//1+0+1 1+1+1 1+2+1 ...1+4+1
			System.out.println();
		}
	}
	
	public void star7() {
		System.out.println("Q7.");
		for(int i=5; i>0; i--) {
			for(int j=0; j<5; j++) {
				System.out.print(j+i);
			}
		System.out.println();
		}
		/*
		for(int i=0; i<0; i++) {
			for(int j=0; j>5; j++) {
				System.out.print(j+5-i); //j+1+(4-i)
			}
		System.out.println();
		}
		 */
	}
	
	public void star8() {
		System.out.println("Q8.");
		for(int i=0; i<5; i++) {
			for(int j=0; j<i+1; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
	
	public void star9() {
		System.out.println("Q9.");
		for(int i=5; i>0; i--) {
			for(int j=0; j<i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		/*
		for(int i=0; i<5; i++) {
			for(int j=0; j<5-i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		*/
	}
	
	public void star10() {
		System.out.println("Q10.");
		for(int i=0; i<5; i++) {			
			for(int j=0; j<i; j++) {//공백출력for문
				System.out.print(" ");
			}
			for(int j=0; j<5-i;j++) {//*출력for문
				System.out.print("*");//i=5 0~4출력 i=4 0~3출력
			}
			System.out.println();
		}
	}
	
	public void star11() {
		// 들여쓰기정렬 : Ctrl+Shift+f
		System.out.println("Q11.");
		for (int i=0; i<5; i++) {
			// i=5일때 공백이 4개출력
			for (int j=0; j<4-i; j++) {
				System.out.print(" ");
			}
			// i=5일때 *이 1개출력
			for (int j=0; j<i+1; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
	
	public void star12() {
		System.out.println("Q12.");
		for(int i=0; i<10; i++) {
			//3항 연산자
			for(int j=0; (i<5)?j<i:j<10-i; j++) {
				System.out.print("*");
			}
			/* if
			if(i<5) {
				for(int j=0; j<i; j++) {
					System.out.print("*");
				}
			}else {//i가 5이상일경우 별감소 실행 
				for(int j=0; j<10-i; j++) { //for(int j=5; j>i-5; j--){}
					System.out.print("*");
				}
			}
			*/
			System.out.println();
		}
	}
	
	public void star13() {
		System.out.println("Q13.");
		
		for(int i=0; i<9; i++) {			
			for(int j=0; i<5?j<5-i:j<i-3; j++) {
				System.out.print("*");
			}			
			/*
			if(i<5) {//감소식 
				for(int j=0; j<5-i; j++) {
					System.out.print("*");
				}				
			}else {//증감식
				for(int j=0; j<i-3; j++) {
					System.out.print("*");
				}
			}
			*/
			System.out.println();
		}
	}
	
	public void star16() {
		System.out.println("Q16.");
		for(int i=0; i<5; i++) {
			for(int j=0; j<4-i;j++) {//앞공백
				System.out.print(" ");
			}
			for(int j=0; j<2*i+1; j++) {//*
				System.out.print("*");
			}
			for(int j=0; j<4-i; j++) {//뒷공백
				System.out.print(" ");
			}
			System.out.println();
		}
	}
	
	public void star17() {
		System.out.println("Q17.");
		for(int i=0; i<5; i++) {
			for(int j=0; j<i; j++) {//앞공백
				System.out.print(" ");
			}
			for(int j=0; j<9-i*2; j++) {//별
				System.out.print("*");
			}
			for(int j=0; j<i;j++) {//뒷공백
				System.out.print(" ");
			}
			System.out.println();
		}
	}
	
	public void star18() {
		System.out.println("Q18.");
		for(int i=0; i<9; i++) {
			if(i<5) {//삼각형
				for(int j=0; j<4-i; j++) {
					System.out.print(" ");
				}
				for(int j=0; j<(i*2)+1; j++) {
					System.out.print("*");
				}
				for(int j=0; j<4-i; j++) {
					System.out.print(" ");
				}				
			} else {//역삼각형 i>=5
				for(int j=0; j<i-4; j++) {
					System.out.print(" ");
				}
				//i=5 일때 7번출력12-5 i=6일때 5번출력11-6 i=7일때 3번출력10-7 i=8일때 1번출력9-8
				for(int j=9; j>2*(i-4); j--) {// int j=0; j<()-i; j++
					System.out.print("*");
				}
				for(int j=0; j<i-4; j++) {
					System.out.print(" ");
				}
			}
			System.out.println();
		}
	}
	
	public void star19() {
		System.out.println("Q19.");
		for(int i=0; i<9; i++) {
			if(i<5) {
				for(int j=0; j<5-i; j++) {//앞*출력문
					System.out.print("*");
				}
				for(int j=0; j<(2*i)+1; j++) { //공백출력문
					System.out.print(" ");
				}
				for(int j=0; j<5-i; j++) {//뒷*출력문
					System.out.print("*");
				}
			} else {
				for(int j=0; j<i-3; j++) {
					System.out.print("*");
				}
				for(int j=9; j>2*(i-4); j--) {
					System.out.print(" ");
				}
				for(int j=0; j<i-3; j++) {
					System.out.print("*");
				}
			}
			System.out.println();
		}
	}
	
	public void star20() {
		System.out.println("Q20.");
		for(int i=0; i<9; i++) {
			if(i<5) {
				for(int j=0; j<i+1; j++) {//앞*
					System.out.print("*");
				}
				for(int j=10; j>(2*i)+1; j--) {//공백출력
					System.out.print(" ");
				}
				for(int j=0; j<i+1; j++) {//뒷*
					System.out.print("*");
				}
			}else {
				for(int j=0; j<9-i;j++) {//앞*
					System.out.print("*");
				}
				//i=5 j3번 / i=6 j5번/ i=7 j7번/ i=8 j9번 
				for(int j=8; j<(2*i)+1; j++) {//공백
					System.out.print(" ");
				}
				for(int j=0; j<9-i; j++) {//뒷*
					System.out.print("*");
				}
			}			
			System.out.println();
		}
	}
	
	public void star21() {
		System.out.println("Q21.");
		for(int i=0; i<9; i++) {
			if(i<5) {
				for(int j=0; j<i+1; j++) {//앞공백
					System.out.print(" ");					
				}
				for(int j=10; j>(2*i)+1; j--) {//*
					System.out.print("*");
				}
				for(int j=0;j<i+1;j++) {//뒷공백
					System.out.print(" ");
				}
			} else { //i=5 j4 i=6 j3				
				 for(int j=0;j<9-i;j++) { 
					 System.out.print(" "); 
					} 
				 for(int j=8; j<(2*i)+1;j++) {
				 System.out.print("*"); 
				 	} 
				 for(int j=0;j<9-i;j++) { 
					 System.out.print(" "); 
					}				 
			}
			System.out.println();
		}
	}

 

2 - 2 ) while

특정 조건이 만족되는 동안 명령을 계속해서 반복적으로 수행함

for문과 다르게 초기식을 미리 작성하고, 증감문도 실행코드 내부에 직접 작성해야 함

while문 표현식 - while(조건문) { 실행문; }

	//안녕하세요를 5번 출력(while)
	public void test1() {
		/*
		for(int i=0; i<5; i++) {
			System.out.println("안녕하세요");
		}
		*/
		//초기값 wihle(조건식){실행문, 증감문}
		int i = 0;//초기값
		while(i<5) {//조건식
			System.out.println(i+" : 안녕하세요");
			i++;
			//증감문 위치에 따라 사용하는 방식이 다르게 적용된다
			//실행문 상단에 작성하면 실행문에서 i출력시 1부터 가능
		}
	}
    	//while문을 이용해서 안녕하세요를 입력받은 횟수만큼 출력
	public void test3() {
		Scanner sc = new Scanner(System.in);
		System.out.print("반복횟수 입력 : ");
		int count = sc.nextInt();
		int i = 0;
		while(i<count) {
			System.out.println("안녕하세요!");
			i++;
		}
	}
	
	//구구단 2단출력하기
	public void test4() {
		int dan = 2;
		System.out.println(dan+"단 입니다.");		
		int i = 0;
		while(i<9) {
			i++;
			System.out.printf("%d * %d = %d \n",dan, i, dan*i);			
		}
	}
	
	//몇단을 출력할 지 입력받은 후 해당 구구단 출력
	public void test5() {
		Scanner sc = new Scanner(System.in);
		System.out.print("몇단을 출력하시게습니까?");
		int dan = sc.nextInt();
		int i = 0;
		while(i<9) {
			i++;
			System.out.printf("%d * %d = %d \n", dan, i, dan*i);
		}
	}

	//반복문으로 5번 반복하여 입력받아 그 합을 출력하는 프로그램
	public void test6() {
		Scanner sc = new Scanner(System.in);
		int i = 0;
		int total = 0;
		
		while(i<5) {
			System.out.print("정수 값을 입력하시오 : ");
			int num = sc.nextInt();
			total +=num;
			i++;			
		}
		System.out.print("입력한 5개의 정수의 합 : "+total);
	}

	//정수 두개를 입력받고 두 수사이의 모든 수의 합을 구하는 프로그램
	public void test7() {
		Scanner sc = new Scanner(System.in);
		System.out.print("첫번째 수 입력 : ");
		int num1 = sc.nextInt();
		System.out.print("두번째 수 입력 : ");
		int num2 = sc.nextInt();
		
		int i = num1;
		int total = 0;
		
		while(i<num2+1) {
			total += i;
			i++;
		}
		System.out.printf("%d ~ %d의 정수의 합 : %d",num1, num2, total);
	}
	
	//수를 입력받고 1부터 입력받은 수 중 짝수들의 합을 구하는 프로그램
	public void test8() {
		Scanner sc = new Scanner(System.in);
		System.out.print("숫자 입력 : ");
		int num = sc.nextInt();
		int i = 0;
		int total = 0;
		while(i<num+1) {
			total += i;
			i=i+2;
		}
		System.out.println("짝수들의 합은 : "+total);
	}

 

2 - 3 ) do ~ while

while문과 유사하지만 조건문이 뒤에 위치하기 때문에 조건문에 맞지 않더라도 1번은 무조건 실행

do ~ while문 표현식 - do{ 실행문; }while(조건문);

	//안녕하세요 5번 출력(do~while)
	public void test2() {
		//코드는 항상 위에서 아래방향으로
		// [ do~while / while 차이 ]
		//do~while문은 조건식검사를 아래에서 하기때문에 무조건 한번은 실행한다.
		//while은 위에서 조건식 검사를 하기때문에 false값이면 실행자체가 X
		int i = 0;
		do {
			i++;
			System.out.println(i+" : 안녕하세요");
		}while(i<5);
	}

'국비수업 > JAVA' 카테고리의 다른 글

7일차 : Random, 배열  (0) 2022.12.07
6일차 : Break, Continue, Random  (0) 2022.12.06
4일차 : Operator  (0) 2022.12.06
3일차 : Scanner, 연산자  (0) 2022.12.06
2일차 : 기본코드, 숫자와 문자, 변수  (0) 2022.12.06
Comments