Java 수업/과제

입력받은 수까지 3,6,9이 포함되어있는지를 확인하는 코드

Booda 2019. 5. 19. 18:44
반응형

문제 1.

3,6,9게임을 만드시오.

단 범위는 (1~100까지의 숫자,10번째줄에선 줄바꿈을 하시오.)

package example;

import java.util.Scanner;

public class Main2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc = new Scanner(System.in);

		int num_1 = sc.nextInt();
		int count = 1;
		int i, j;

		if (count != num_1) {

			for (i = 1; i <= (num_1 / 10); i++) {
				for (j = 0; j < 10; j++) {
					if ((count / 10 != 0 && (count / 10) % 3 == 0) || (count % 10 != 0 && (count % 10) % 3 == 0)) {
						System.out.printf("%3s", "*");
						count++;
					} else {
						System.out.printf("%3d", count);
						count++;
					}
				}
				System.out.println();
			}
		}
		sc.close();
	}
}

위와 같이하게되면 1~100까지의 숫자는 잘 입력이 된다. 하지만 문제점이라면 100이상의 숫자를 하게 되면 10을 나눈 몫의 값이 3으로 나누어떨어질때 ex)120....150...등등 에도 *표시를 하기때문에 위의 코드에선 매우 한정적이고 실용적이지가 않다.

단지 숙제만을 위한 1차원적인 코드이다.

 

문제 2.

369 게임을 만드는데 입력한 숫자까지 3,6,9가 들어간 숫자는 모두 *표시를 한다.

package practice.game369;

import java.util.Scanner;

public class Game369 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int num_1 = sc.nextInt(); // int 형식으로 원하는 숫자까지 받음
		int i;

		for (i = 1; i <= num_1; i++) {
			String str = String.valueOf(i); // int형식의 i를 string형식으로 변환
			String len = String.valueOf(num_1); // int형식의 num_1을 string형식으로 변환
			if (i % 10 == 0) { // 10의 배수인경우 줄바꿈을 해주어야 하기 때문에 따로 작성을 해놓은 것이다.
				if (str.contains("3") || str.contains("6") || str.contains("9")) {
					System.out.printf("%" + (len.length() + 1) + "s \n", "*"); // 똑같이 3,6,9체크를 하는데 거기서 줄바꿈이 들어가는것만 다를뿐
																				// 똑같다.
					continue;
				} // continue를 써서 다음동작이 중복실행되지않게 넘겨줘야한다 아니면 밑의 경우에도 작동이 되기때문에 넘어가게 해야한다.
				else {
					System.out.printf("%" + (len.length() + 1) + "d \n", i); // 중간에 len.length()+1을 쓴 이유는 입력되는 글자수가 3자이면
																			// 총 자릿수가 공백 포함해서 3개이지만 난 한칸 더 원해서 +1을
																			// 해주었다.
					continue;
				}
			} else {
				if (str.contains("3") || str.contains("6") || str.contains("9")) {
					System.out.printf("%" + (len.length() + 1) + "s", "*");
					continue;
				}
				System.out.printf("%" + (len.length() + 1) + "d", i);
			}
		}

		// 위 소스 참조 출처 :https://baekh-93.tistory.com/10
		// 위 페이지에서 참조한것은 str로 형변환 한것을 비교하기위한 contains 사용법을 가져옴.

		sc.close();
	}}

위의 코드는 숫자를 문자열로 치환하여 하는것이기때문에 각각 들어가는 숫자가 포함되어있는지를 확인하는 구문이다.

 

len의 변수를 String으로 형변환 한 이유는 서식문자를 쓸때 입력되는 숫자보단 커야하니까 그숫자의 길이보단 크게 만들거나 같게 만들어야하기 때문에 따로 넣어줌.

 

반응형