JAVA3

Leafy·2023년 12월 6일
0

중앙_자바

목록 보기
6/76

문제

public class Test01 {
	public static void main(String[] args) {
		// 1 ~ 127까지의 랜덤한 수를 뽑는 코드를 만들자.
		// Math.random();을 이용해서.
		// 아스키코드표
		int random = (int) (Math.random() * 127 + 1); // 1 더하지 않으면 0~126
		System.out.println((char) (random));
		
//		char random = (char) (Math.random() * 127 + 1);
//		System.out.println(random);
		
		
		// 영문자인지, 숫자인지, 특수기호인지 찾아내는 if문을 만들고 싶어요.
		// 영문자 65~90, 97~122
		// 숫자 48~57
		// 특수기호는 나머지 전부??
//		if (random >=48 && random <= 57) {
//			System.out.println((char) (random) + " 숫자입니다.");
//		} else if (random >= 65 && random <= 90 || random >= 97 && random <= 122) {
//			System.out.println((char) (random) + " 영문자입니다.");
//		} else {
//			System.out.println((char) (random) + " 특수문자입니다.");
//		}
		
		// 숫자인지, 특수기호인지 찾아내는 if문 만들기.
		// 문자로 범위 잡아도 잘 된다~
		if(random >= '0' && random <= '9') {
			System.out.println("숫자입니다.");
		} else if(random >= 'A' && random <= 'Z') {
			System.out.println("영어 대문자입니다.");
		} else if(random >= 'a' && random <= 'z') {
			System.out.println("영어 소문자입니다.");
		} else {
			System.out.println("숫자/영어 외 특수 문자입니다.");
		}
	}
}

JAVA 11 API 검색어로 오라클 HELP CENTER에서 API 문서 볼 수 있다.

  • 반복문 for
package dec06;
// 반복문
/* 자바에서는 필요에 따라서 특정 문장을 반복적으로 실행 가능
 * 이때 사용되는 구문이 loop문.
 * 자바는 3가지를 제공. for(forEach), while, do~while
 * 
 * for(변수초기화식; 변수조건문; 변수증감식){
 * 		변수 조건문이 참이 된다면 반복 실행할 문장;
 * }
 * 
 */
public class For01 {
	public static void main(String[] args) {
		
		for (int i = 0; i < 5; i++) {
			System.out.print("*");
		}
		
		System.out.print("이렇게 해도 엔터 됨. \n\r");
		String star = "";
		for (int i = 0; i < 5; i++) {
			star += "*";
		}
		System.out.println(star);
	}
}
  • 8개수 세기
package dec06;

import java.util.Iterator;

/*
 * https://codingdojang.com/scode/393

1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가?

8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다.
(※ 예를들어 8808은 3, 8888은 4로 카운팅 해야 함)
 */
public class Test02 {
	public static void main(String[] args) {
		int count = 0; // 8 나올 때마다 저장할 변수
		
		for (int i = 0; i < 10000; i++) {
//			System.out.println(i + ", ");
			String value = String.valueOf(i); //숫자 i -> 문자화
//			System.out.println(value);
//			char valueCh = value.charAt(0);
			for (int j = 0; j < value.length(); j++) {// 120 -> 3
//				System.out.print(value.charAt(j));
				if(value.charAt(j) == '8') {
					count++;
				}
			}
//			System.out.println("");//enter
		}
		
		System.out.println("8의 총합은: " + count);
	}
}

위에꺼 주석 빼고 정리하면

  • 8을 문자로 바꿔서 푼 것.
public class Test02 {
	public static void main(String[] args) {
		int count = 0; // 8 나올 때마다 저장할 변수
		
		for (int i = 0; i < 10000; i++) {
			String value = String.valueOf(i); //숫자 i -> 문자화
			for (int j = 0; j < value.length(); j++) {// 120 -> 3
				if(value.charAt(j) == '8') {
					count++;
				}
			}
		}
		
		System.out.println("8의 총합은: " + count);
	}
}

숫자 형태로 8 카운트하는 방법 찾아보자.

  • 풀이 2개 찾음
package dec06;

import java.util.Iterator;

/*
 * https://codingdojang.com/scode/393

1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가?

8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다.
(※ 예를들어 8808은 3, 8888은 4로 카운팅 해야 함)
 */
public class Test02 {
	public static void main(String[] args) {
		int count = 0; // 8 나올 때마다 저장할 변수

//		// 풀이 1
//		for (int i = 0; i < 10000; i++) {
//			if (i % 10 == 8)
//				count++;
//			if (i / 10 % 10 == 8)
//				count++;
//			if (i / 100 % 10 == 8)
//				count++;
//			if (i / 1000 % 10 == 8)
//				count++;
//		}

		// 풀이2
		for (int i = 0; i < 10000; i++) {
			for (int j = i; j > 0; j /= 10) {//i를 계속 10으로 나눠서 나머지가 8일때 count
				if(j % 10 == 8) {
					count++;
				}
			}
		}

		System.out.println("8의 총합은: " + count);

		// 여기서 8 골라내는 거 먼저 해봐도 된다.
		int num = 1288;
		System.out.println(num % 10);
		System.out.println(num / 10 % 10);
		System.out.println(num / 100 % 10);
		System.out.println(num / 1000 % 10);

	}
}

중첩 for문

package dec06;

public class For03 {
	public static void main(String[] args) {
		
		//for 속에 for (이중 for문)
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				System.out.print("(" + i + ", " + j + ")");
			}
			System.out.println();//enter
		}
		
		System.out.println("============================");
		
		// 아래 문장 반복문 출력
		// *****
		// *****
		// *****
		// *****
		// *****
		
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		
		System.out.println("============================");

		int n = 1;
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j < n; j++) {
				System.out.print("*");
			}
			n++;
			System.out.println();
		}
		
		System.out.println("============================");
		// i로 하면 되는구나~~
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j <= i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
        
        
		// *****
		// ****
		// ***
		// **
		// *
		System.out.println("============================");
		
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5 - i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		
		System.out.println("============================");
		
		for (int i = 0; i < 5; i++) {
			for (int j = 5; j > i; j--) {
				System.out.print("*");				
			}
			System.out.println();
		}
	}
}

수많은 루프


// 무한 반복
for (;;) { //C언어에서 무한루프 쓸 때
	System.out.println("!");
}

0개의 댓글