반복문 for문 구구단

DONGDONG_JU·2023년 5월 30일
0

자바

목록 보기
5/16

for문의 hello world 같은 존재 구구단! 아님 말고 :-(
몇단 계산할껀지 입력받고 했다.

		Scanner sc = new Scanner(System.in);
		
		int i;
		int gugu;
		int result = 0;
		
		
		System.out.print("구구단의 단을 입력 하세요: ");
		gugu = sc.nextInt();
		sc.close();
		
		System.out.printf("[ %d 단 ]\n",gugu);
		
		for(i=1; i<=9; i++) {
			result= i*gugu;
			
			System.out.printf("%d x %d = %d\n",gugu,i,result);
		}
		


이번엔 9*9까지 출력해보기

		int dan =2;
		int num = 1;
		
		
		for(int i=0; i<72; i++ ) {
			
			
			System.out.printf("\n%d X %d = %d",dan,num,dan*num);
			num++;
			
			if(num == 10) {
				dan ++;
				num = 1;
			}
		}

밑에 한줄로 쭉 21=2~ 99=81 까지 잘나옴


for문안에 조건 여러개 넣어보기

//1부터 100사이의 값 중 홀수의 합과 짝수의 합을 동시에 구하여 그 결과를 출력하는 코드를 작성하세요.
		//for안에 조건 여러개 넣기
		
		int eventotal = 0;
		int oddtotal =0;
		int i =0;
		
		for(int even=2, odd=1; even<=100 && odd<=100; even +=2, odd+=2) {
			eventotal += even;
			oddtotal += odd;
		}
		
		System.out.println("홀수의 합: "+oddtotal+", 짝수의 합: "+eventotal);
	
		/*
		int total = 0;
		int total2 =0;
		int i =0;
				
		for(i=1; i<=100; i++) {
			if(i%2 !=0) {
				total +=i;
			}else {
				total2 += i;
			}
		}
		
		*/

당연하게 for안에 if문넣어서 풀었더니 for문안에 if넣어서 풀지 말라고 하셨다.. 머쓱
그래서 주석 달아놓고 다시해봤다!


과제1-기본출력

2단부터 9단 까지의 전체 구구단 결과를 실행 예와 같이 출력하는 코드를 작성하세요.

[2단]
2X1 =2
......
9X9 =81

단 하나의 for반복문을 사용합니다.

위에 예시랑 비슷하지만 [%d단]이 들어가야 한다!

int dan =2;
		int num = 1;
		
		
		for(int i=0; i<72; i++ ) {
			if(num ==1) {
				System.out.printf("\n\n[%d단]",dan);  //만약 곱하는수가 1이면 [%d단] 나오게 조건문 넣어주기
			}
			
			System.out.printf("\n%d X %d = %d",dan,num,dan*num);
			
			num++;
			
			if(num == 10) {
				
				dan ++;
				num = 1;
			}
			
		}

과제2-기본출력 중첩for문으로

2단부터 9단 까지의 전체 구구단 결과를 실행 예와 같이 출력하는 코드를 작성하세요.

2 1 =2
......
9
9 =81

단 중첩for반복문을 사용합니다.

이번엔 중첩for문을 써야한다.
1번과제에 72까지보다 중첩for문이 훨 보기도 좋고 쉬운듯?

for(int i=2; i<=9; i++) {
			for(int j=1; j<=9; j++) {
				
				System.out.printf("\n%d x %d = %d",i,j,i*j);
			}
		}

단 3~4줄 끝!


과제3-중첩for문에 레이블 넣기

2단부터 9단 까지의 전체 구구단 결과를 실행 예와 같이 출력하는 코드를 작성하세요.

[2단]
2 1 =2
......
9
9 =81

*중첩 for문

과제2랑 비슷하지만 역시나 단이 새로 시작하면 [%d단]이 들어가야 한다!

for(int i=2; i<=9; i++) {
			for(int j=1; j<=9; j++) {
				if(j==1) {
					System.out.printf("\n\n[%d단]",i);
				}
				System.out.printf("\n%d x %d = %d",i,j,i*j);
			}
		}

아직까진 잘했다!


과제4-중첩for문 수평출력

2단부터 9단 까지의 전체 구구단 결과를 실행 예와 같이 출력하는 코드를 작성하세요.

중첩 for문 사용

옆으로 출력

2X1 3X1 4X1 5X1 6X1 7X1 8X1 9X1
2X2 3X2....
이런식으로 나와야했음!

for(int i=1; i<=9; i++) {
			for(int j=2; j<=9; j++) {
				System.out.printf("\t%d x %d = %d",j,i,i*j);
			}
            System.out.printf("\n");
		}

밑으로 쭉써내려가서 새로운 단에서 올리는게 아니라
첫줄을 2X1 3X1 4X1 5X1 6X1 7X1 8X1 9X1 하고 개행(\n)시키는거였다.
근데 출력을 i,j순으로 하니까 안나와서 j,i 위치를 바꾸니 잘나왔고
개행하는거도 포인트였다.
첫 for문이 돌때마다 print를 넣어주면 됐었던 문제였다.
2X1 3X1 4X1 5X1 6X1 7X1 8X1 9X1
까지는 나오던데 다음 개행이 안됐었는데.. 역시나 허무했지만 재밌었다!


과제5-중첩for문 수평출력+레이블

2단부터 9단 까지의 전체 구구단 결과를 실행 예와 같이 출력하는 코드를 작성하세요.

중첩 for문 사용

단이름 출력하기
0줄을 추가해서 i==0 일때 print추가하기. 이건쫌 생각못했다. 2x0 이면 print 출력

과제4랑 비슷하지만 단위에 [%d단]을 넣어야 했다

for(int i=0; i<=9; i++) {      //0줄부터 9줄까지~  곱하는 수 변경 반복문
			for(int j=2; j<=9; j++) {   //단수 변경 반복문
				if(i==0) {
					System.out.printf("  [%d 단]\t\t",j);
				}else {
					System.out.printf("%d x %d = %d\t",j,i,i*j);
				}
			}
			System.out.println();
		}

아무리 해도 [단]이 위에 안생기고 옆아래 다 생겨버렸다..
결국 못풀고 해설듣고 나서 알았다.
첫줄을 0줄을 추가해서 곱하는수가 0이면 [%d]를 추가하면 되는거였다..

출력하면 이렇게 나옴!


구구단을 여러방법으로 풀어보았다

참고문헌- 자바의정석 (남궁성)

profile
웹개발자로 취업하고싶어 공부중인 HDJ 입니다

0개의 댓글