1. 1에서 100까지의 정수 중에서 2, 3, 5, 7의 배수를 제외한 수를 한행에 10개씩 출력하세요.
int cnt = 0; for (int i = 1; i < 101; i++) { //초기값 1, 1씩증가하며 100까지만 반복하는 for문 if(i % 2 !=0 && i % 3 != 0 && i % 5 !=0 && i % 7 != 0) { //i가 2, 3, 5, 7의 배수가 아닐 때에만 출력 System.out.print(i+"\t"); cnt++; //출력할 때에만 cnt++ } if(cnt == 10) { //숫자를 10개 출력했을 때 System.out.println(); //줄넘김 cnt = 0; //cnt 0으로 초기화 } } |
2. 다음을 출력하는 프로그램을 중첩된 for문을 이용하여 작성하시오.
힌트) Math.abs(): 절대값을 구하는 메소드 예)-7이면 7
sol 1)
Scanner sc = new Scanner(System.in); //스캐너 생성 System.out.print("행 수 입력: "); int num = sc.nextInt(); //행 수 입력 for (int i = 0; i < num; i++) { //정해진 행 만큼 반복 for (int j = 0; j < num-i-1; j++) { //공백 생성 System.out.print(" "); } for (int j = -i; j <= i; j++) { //수 입력 System.out.print(Math.abs(j)); } System.out.println(); //줄바꿈 } |
sol 2)
int i, j; int num = 8; //행수를 num에 저장 for(i=0; i < num; i++) { //행 수만큼 반복 for (j = num; j >= -num; j--) { //열 수만큼 반복 (-8 ~ 8) if(Math.abs(j) > i) {//열 (-8 ~ 8)보다 행이 클 때 공백 출력 System.out.print(' '); }else { System.out.print(Math.abs(j)); } } System.out.println(); //줄넘김 } |
3. 표준 입력으로 입력한 정수에서 각각의 자리에 해당하는 수를 반대로 출력하는 프로그램을 do~while문을 이용하여 작성하시오.
Scanner sc = new Scanner(System.in); //스캐너 생성 System.out.print("정수 입력: "); int num = sc.nextInt(); //정수 입력 System.out.print("자릿수를 바꾼 수: "); do { System.out.print(num % 10); //정수를 10으로 나눈 나머지 == 1의 의 자리 출력 num /= 10; //정수를 10으로 나눈 몫을 다시 저장 } while (num > 0); //숫자가 남아 있을 때 다시 반복 |
4. 다음 수식과 내용을 참고로 해당하는 x와 y값을 출력하는 프로그램을 작성하시오.
y = 4x3 + 5x2 + x + 2, x는 5에서 10사이 0.5씩 증가하도록
double y; System.out.println("y = 4x^3 + 5x^2 + x + 2"); //방정식 출력 for (double x = 5; x <= 10; x += 0.5) { //x 초기값 5, 0.5씩 증가하며 10이하일 때만 반복하는 for문 y = 4 * Math.pow(x, 3) + 5 * Math.pow(x, 2) + x + 2; //Math.pow(a, b) == a의 b제곱 //y에 방정식 입력 System.out.println("x = "+x+" y = "+y); //x, y값 출력 } |
5. 다음 조건을 만족하는 프로그램을 작성하시오.
원금이 1,000,000인 경우, 예치 기간을 1년에서 10년까지 매년 말에 받을 총 금액을 출력
년 단위 단리이자 = 원금 * 이율(4.5%) * 년(예치기간)
만기 시 총 수령액(년리 적용) = 원금(1+ 이율(4.5%) * 년(예치기간)
Scanner sc = new Scanner(System.in); int won; double yearWon=0; System.out.print("원금 입력: "); won = sc.nextInt(); for (int i = 0; i < 10; i++) { System.out.print(i+1+"년: "); yearWon = won * 0.045 * (i+1); System.out.println(yearWon); } System.out.println("원금 + 이자: "+(yearWon+won)); System.out.println("만기 시 총 수령액: "+won*(1+(0.045*10))); |
6. 다음 식을 참고로 섭씨 온도(C)를 화씨 온도(F)로 변환하는 프로그램을 다음과 같은 출력이 나오도록 작성하시오.
F = (9.0 / 5.0 ) * C + 32;
섭씨 온도가 -60 ~140까지 20씩 증가, 이 때 화씨온도를 구하여 출력하는 온도는 모두 정수 형태로 출력
double F; for (int C = -60; C <= 140; C+=20) { //c 초기값 -60, 20씩 증가하며 140 이하일 때만 반복하는 for문 System.out.print("섭씨 온도: "+C+"\t화씨 온도: "); F = (9.0 / 5.0) * C + 32; //화씨온도 방정식 System.out.println((int)F); //화씨온도 정수형으로 형변환하여 출력 } |
7. 1부터 n까지 합 중에서 5000을 넘지 않는 가장 큰 합과 그때에 n을 구하는 프로그램 작성하시오.
int sum=0, i; for (i = 1; sum <= 5000; i++) { //i 초기값 1, 1씩 증가하며 sum이 5000 이하일 때 반복하는 for문 sum += i; //sum에 i값 더하기 System.out.println(i+"번째"+sum); } System.out.println("결과 "+(i-2)); //for문이 끝나면 마지막 반복이 5000을 넘었다는 것이며, 마지막 증감식까지 진행되었기 때문에 //i-2가 5000을 넘지 않는 마지막 n이다. |
8. 구구단 출력하기
// a X b = n이라 할 때, for (int i = 2; i < 10; i++) { //x에 해당하는 수 2~9 for (int j = 2; j < 10; j++) { //y에 해당하는 수 2~9 System.out.print(i+" X "+j+"="+i*j+" "); //가로로 출력 } System.out.println(); //하나의 단이 끝나면 줄넘김 } System.out.println(); for (int i = 2; i < 10; i++) { for (int j = 2; j < 10; j++) { System.out.print(j+" X "+i+"="+i*j+" "); //세로로 출력 } System.out.println(); } |
9. 아래와 같이 출력하시오
[1, 1] [1, 2] [1, 3] [1, 4] [1, 5]
[2, 1] [2, 2] ...................... [2, 5]
:
[5,1] [5,2][5,3][5,4][5,5]
for (int i = 1; i < 6; i++) { //i는 1~5까지 반복 for (int j = 1; j < 6; j++) {//j는 1~5까지 반복 System.out.print("["+i+", "+j+"]\t"); //[i, j]출력 } System.out.println(); //j가 5까지 출력 된 후에 줄바꿈 } |
10. 아래와 같이 출력하세요.
[1,1]
[2,2]
[3,3]
[4,4]
[5,5]
for (int i = 1; i < 6; i++) { System.out.println("["+i+", "+i+"]"); } |
11. 가위 바위 보 게임 만들기
Math.random()함수 이용 과정:
기본은 0.0 <= Math.random() < 1.0
1~3까지 랜덤하게 나오는 수를 만들어 보기
1단계 가장 큰수 0.0*3 <= Math.random() * 3 < 1.0*3
0.0 <= Math.random() * 3 < 3.0
2단계 정수형을 형변환한다.
(int)0.0 <= (int)(Math.random() * 3) < (int)3.0
0 <= (int)(Math.random() * 3) < 3
3단계 각변 1을 더한다.
1 <= (int)(Math.random() * 3) + 1 < 4
(if문 이용)
Scanner sc = new Scanner(System.in); //스캐너 생성 int com = (int)(Math.random()*3) + 1; //Math.random() 함수를 이용해 컴퓨터의 값을 1~3중 하나로 랜덤 출력 System.out.print("가위(1), 바위(2), 보(3)중 하나를 입력하세요--> "); int choice = sc.nextInt(); System.out.println("당신은 "+choice+" 입니다.\n컴퓨터는 "+com+" 입니다."); if((choice-com) == 1 || (choice-com) == -2) { //이기는 경우 System.out.println("유저 승리입니다."); }else if(choice == com) { //비기는 경우 System.out.println("비겼습니다."); }else { //그 외의 경우(컴퓨터가 이기는 경우) System.out.println("컴퓨터 승리입니다."); } |
(switch ~ case문 이용)
Scanner sc = new Scanner(System.in); //스캐너 생성 int com = (int)(Math.random()*3) + 1; //Math.random() 함수를 이용해 컴퓨터의 값을 1~3중 하나로 랜덤 출력 System.out.print("가위(1), 바위(2), 보(3)중 하나를 입력하세요--> "); int choice = sc.nextInt(); System.out.println("당신은 "+choice+" 입니다.\n컴퓨터는 "+com+" 입니다."); switch (choice) { case 1: //유저가 가위를 냈을 경우 if(com == 1) System.out.println("비겼습니다."); //컴퓨터가 가위를 냈을 경우 if(com == 2) System.out.println("컴퓨터 승리입니다."); //컴퓨터가 바위를 냈을 경우 if(com == 3) System.out.println("이겼습니다."); //컴퓨터가 보를 냈을 경우 break; case 2: //유저가 바위를 냈을 경우 if(com == 1) System.out.println("이겼습니다."); //컴퓨터가 가위를 냈을 경우 if(com == 2) System.out.println("비겼습니다."); //컴퓨터가 바위를 냈을 경우 if(com == 3) System.out.println("컴퓨터 승리입니다."); //컴퓨터가 보를 냈을 경우 break; case 3: //유저가 보를 냈을 경우 if(com == 1) System.out.println("컴퓨터 승리입니다."); //컴퓨터가 가위를 냈을 경우 if(com == 3) System.out.println("비겼습니다."); //컴퓨터가 바위를 냈을 경우 if(com == 2) System.out.println("이겼습니다."); //컴퓨터가 보를 냈을 경우 break; default: //잘못된 숫자를 입력한 경우 System.out.println("1, 2, 3중 하나를 입력해주세요."); break; } |
12. 숫자 맞추기 게임
Scanner sc = new Scanner(System.in); //스캐너 생성 int user; int com = (int)(Math.random()*100) + 1; //컴퓨터가 1~100중 하나의 값을 가져온다. do { System.out.print("1과 100사이의 정수를 입력하세요. ==> "); user = sc.nextInt(); //정수 입력 if(com > user) { //컴퓨터의 수보다 작을 때 System.out.println("더 큰 값으로 다시 시도하세요."); }else if(com < user) { //컴퓨터의 수보다 클 때 System.out.println("더 작은 값으로 다시 시도하세요."); }else { //그 외 (정답)일 때 System.out.println("정답입니다."); } }while(user != com); //틀렸을 때 반복 |
13. 숫자를 계속 입력받는다 0을 입력하면 지금까지 입력한 숫자를 모두 더한 것을 출력한다. 반복문을 이용한 계산하기
힌트) flag를 이용하여 boolean flag=true;로 하고 반복문의 조건을 flag로 한다. 이후 0이 입력되면 flag을 false로 바꾼다.
Scanner sc = new Scanner(System.in); //스캐너 생성 int sum=0; boolean flag = true; //flag를 true로 저장 do { System.out.println("합계를 구할 숫자를 입력하세요(끝내려면 0을 입력)"); int num = sc.nextInt(); //정수 입력 sum+=num; //입력한 정수를 sum에 더하기 if(num == 0) flag = false; //0을 입력받았을 때, flag를 false로 저장 } while (flag); //flag가 true일 때에만 반복 System.out.println("합계: "+sum); //합계 출력 |
14. 정수를 문자열로 입력받아 각 자리수 합 구하기
Scanner sc = new Scanner(System.in); //스캐너 생성 int sum=0; String num; System.out.print("정수 입력: "); num = sc.next(); //문자열로 정수 입력 int num1 = Integer.parseInt(num); //Integer.parseInt()로 문자열로 입력받은 정수를 int형으로 변환 for (int i = 0; num1 > 0; i++) { //num1이 0보다 클 때에만 반복 sum += num1 % 10; //num1을 10으로 나눈 나머지 (1의자리)를 sum에 더하기 System.out.println("sum = "+sum+" number = "+num1); // num1 /= 10; //num1을 10으로 나눈 값을 num1에 저장 (1의 자리 없애기) } System.out.println("각 자리수의 합: "+sum); |
'Java & Kotlin > Java' 카테고리의 다른 글
[Java] replaceAll, replaceFirst 에서 특수문자 인식하기 (0) | 2022.06.24 |
---|---|
[Java] 크롤링 crawling, 셀레니움 Selenium (0) | 2021.02.22 |
20.11.09 - 배열 예제 (0) | 2021.01.19 |
20.11.03 - 연산자 예제 (0) | 2021.01.19 |
16. 상속 (extends, 오버라이드) (0) | 2021.01.19 |
15. 싱글톤 (Singleton) (0) | 2021.01.19 |