if, switch, for문(별 만들기, 구구단) 활용

정혅·2024년 1월 31일

공부

목록 보기
1/11
public class If_Switch_Project {
	public static void main(String[] args) {
		//kor, eng, math 값은 Scanner 이용해 직접 입력받기
		int  kor, eng, math;
		String name;
		Scanner sc = new Scanner(System.in);
		
		System.out.println("이름을 입력하세요 : ");
		name = sc.nextLine();
		
		System.out.print("국어 점수를 입력하세요 : ");
		kor = sc.nextInt();
		
		System.out.print("영어 점수를 입력하세요 : ");
		eng = sc.nextInt();
		
		System.out.print("수학 점수를 입력하세요 : ");
		math = sc.nextInt();
		System.out.println("-------------------------");
		System.out.printf("이름\t국어\t영어\t수학\n");
		System.out.printf("%s\t %d\t %d\t %d\n", name, kor, eng, math);
		System.out.println("-------------------------");
	
		int sum = kor + eng + math;
		float avg = sum/3.0f;
		String hakjum = null;
		//if문을 이용해 등급 나누기
		if (avg >= 90) {
			System.out.println("1등급입니다.");
		}else if (avg >= 80) {
			System.out.println("2등급입니다.");
		}else if (avg >= 70) {
			System.out.println("3등급입니다.");
		}else if (avg >= 60) {
			System.out.println("4등급입니다.");
		}else if (avg >= 50) {
			System.out.println("5등급입니다.");
		}else {
			hakjum = "9등급입니다.";
		}
		//switch문을 이용해 등급 나누기
		switch ((int)avg/10) {//switch 옆에는 정수, 문자, 문자열만 올 수 있다. 실수는 올 수 없다.
		case 10 : hakjum = "1등급"; break;
		case 9 : hakjum = "2등급"; break;
		case 8 : hakjum = "3등급"; break;
		case 7 : hakjum = "4등급"; break;
		case 6 : hakjum = "5등급"; break;
		case 5 : hakjum = "6등급"; break;
		default : hakjum = "9등급"; 
		}
		System.out.printf("총점 : %d\n", sum);
		System.out.printf("평균 : %.2f\n", avg);
		System.out.printf("등급 : %s\n", hakjum);
		sc.close();
	}
}

if와 switch문을 이용한 성적의 총점, 평균, 등급을 구해보았다.

머릿속으로는 어떻게 할지 시나리오를 짜놨는데 디테일하게 안짜서 그런지 순서대로 술술 코드가 짜지지 않았다. 변수 만들었다가 코드 짜고 다시 변수 만들고 약간 이렇게 뒤죽박죽? 다음에는 순서를 어떻게할지 시나리오를 확실하게 짜고 넘어가는 연습도 해야겠다.

출력값:

//for문을 이용하여 짝수의 합계 구하기
				int sum = 0;
				int y;
				for(y=1; y<=10; y+=2) {
					sum = sum + y;
					System.out.println(sum);
				}
				System.out.println("");
				
				
			
		

출력값:

//for문을 이용하여 홀수, 짝수의 합계 구하기
				int one = 0; //홀수
				int two = 0; //짝수
				int i = 0;
				for(i=1; i<=10; i++) {
					if(i%2 == 0) {
						two = two + 1;
					}else {
						one = one + i;
					}
				}
				System.out.println("짝수의 합 :" + two);
				System.out.println("홀수의 합 :" + one);

출력값:


for문을 이용해 짝수만 출력/ 홀수만 출력

//짝수만 출력
		int jjak;
		for (jjak = 0; jjak < 10; jjak += 2) {
			System.out.println("짝: " + jjak);
            }
            
 //홀수만 입력
		int holl = 0;
		for (holl = 0; holl < 10; holl += 2) {
		System.out.println("홀: " + holl); 
		}

for문 {} 할 때 괄호 닫고 중괄호 전에 세미콜론을 붙여서 문장이 제대로 출력이 안됐다.
System.out.println 문장을 for문 중괄호 닫고 그 뒤에 넣으니까 한 줄만 출력된다.

for문을 사용할때 세미콜론과 중괄호의 위치 잘 살피자...

*로 직사각형 만들기

간단한 방법 1.

int i, j;
	for(i = 0; i < 5; i++){
System.out.print("*");
System.out.print("*");
System.out.print("*");
System.out.print("*");
System.out.print("*");
    System.out.println(); //이 식에서는 println이 중괄호 밖으로 나가면 *이 다 이어져서 출력되니 주의
}
  • i = 0,1,2,3,4 이렇게 5회 진행된다.

  • print로 출력했기 때문에 저 다섯문장이 모두 이어져서 출력된다 ex)"*****"

    • 첫번째 문장 출력 후 println으로 줄 바꿈을 해주고 두번째 출력때도 똑같이***** 출력하고 줄바꿈 이렇게 5회 진행된다.

간단한 방법을 for문 이용해서 할 수 있는 방법 2.

for(i = 0; i < 5; i++) {
			for(j = 0; j < 5; j++) {
				System.out.print("*");
			
			}
			System.out.println(); //이 식에서는 중괄호 밖이 아닌 안에 있으면 모든 *이 다 줄바꿈해서 나
		}
	}
}

이중 반복문

별 (*) 왼쪽 삼각형 만들기
for (i = 0; i < 5; i++) {
			for (j = 0; j < i + 1; j++) {
				System.out.print("*");
			}
		System.out.println();
}

별 (*) 오른쪽 삼각형 만들기
System.out.println("--------------");
		for(i = 0; i < 5; i++) {
			for(j = 0; j < 4 - i; j++) { //*
				System.out.print(" ");
			}
			for (int k = 0; k <= i; k++) {
				System.out.print("*");
			}
			System.out.println();
		}

  • 공백을 써야하는 이유는 첫줄: 공백 4번 + 별/ 두번째 줄: 공백 3번 + 별 두개 > 이런식이기 때문

  • *에서는 j < = 4 가 되면 0,1,2,3,4 로 5개의 공백을 가지게 되므로 j < 4가 되어야한다.

항상 숫자의 시작은 0임을 명심하자

  • for j구문에서 첫번째 줄의 공백을 맡고 조건이 거짓으로 변하면 k구문으로 넘어가 *을 출력한다. > i구문으로 넘어가 i++이 되고 다시 j > k > i 이 순서를 반복하며 출력한다.

구구단 만들기

시나리오

1 . a * b 를 해야하니 a 와 b의 변수를 만든다.

  1. 변수 생성 후 a가 1일때 9까지 더해질 수 있도록 for문을 만든다.

  2. b가 a와 곱해질때 9까지 더해질 수 있도록 a for문 안에 b for문을 만들어준다.

  3. b for문 안에 a * b = sum 의 형태로 출력되도록 만든다.


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


단 입력받아서 구구단 출력하기
				/* 시나리오
				 1. 스캐너 출력하기
				 2. 변수 생성하기
				 3. 질문 출력하기
				 4. 질문 입력해오기
				 5. 1~9까지 곱해질 수 있는 변수 생성하기
				 6. for문 이용해서 변수가 1씩 더해질 수 있도록 만들기
				 7. [ 단 x 수 = 곱한 수 ] 형식으로 출력되게 하기
				 */
				Scanner sc = new Scanner(System.in);
				int dan;
				System.out.println("몇 단을 출력할까요? : ");
				dan = sc.nextInt();
				
				System.out.println("----------");
				for (int a = 1; a < 10; a++) {
					System.out.printf("%d x %d = %d\n", dan, a, dan*a);

구구단 만들 때 저 for문이 뭔가 잘못되었었는지 수가 1씩 안 더해지고 그냥 10만 계속 곱해졌다. 육안으로 봤을때는 진짜 다른게 없었는데 뭐가 문제인지 알 수가 없다.. 결국 다시 작성해서 완성시켜줬다.

  • A~Z까지 int를 사용해서 출력하기
for(int alpha = 65; alpha <= 90; alpha++) {
			System.out.println((char)alpha);
		}

  • A~Z까지 char를 사용해서 출력하기 : 문자는 아스키코드값을 이용해서 한글자씩 증가시킬 수 있다.
char ch;
		for(ch = 'A'; ch <= 'Z'; ch++) {
			System.out.print(ch);
		}

println이 아닌 print로 출력하면 이렇게 줄 바꿈 없이 가로로 출력

  • for문을 이용해서 구구단 1~9단까지 한번에 출력하기
      1. 숫자1 x 숫자2 에 들어갈 변수 설정해주기
        2. 숫자 1 먼저 for문 만들어주기
        3. 숫자 1 for문 안에 숫자 2 for문 만들어주기
        4. 숫자 2 for문 안에 어떤 형식으로 출력할지 작성하기
        5. 숫자 1 for문 안에 숫자 2 for문이 마친 후 어떻게 출력할 건지 작성하기
        int i, j;
        		for(i = 1; i <= 9; i++) {
        			for(j = 1; j <=9; j++) {
        				System.out.println(i + "x" + j + "=" + i * j);
        			}
        			System.out.println("-------------------");
        		}
![](https://velog.velcdn.com/images/ssogary1030/post/192e0b47-6b1a-4177-ba8b-2db714b541b7/image.png)

- for문을 이용해서 구구단 1~9단까지 가로로 출력하기

for (i = 1; i <= 9; i++) {
for(j = 1; j <= 9; j++) {
System.out.printf("%d %d = %d", i, j, i j);
}
System.out.println("-------------------"); //출력이 각 줄 오른쪽 끝에 출력된다.
}


0개의 댓글