예제1) 요구사항 : 시작숫자 종료 숫자를 받아 아래와 같이 출력되도록 하시오.
- 조건
- 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55를 출력하시오.
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0039 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int sum = 0;
String oper = "";
System.out.print("시작 숫자 : ");
int StartNum = scan.nextInt();
System.out.print("종료 숫자 : ");
int EndNum = scan.nextInt();
for(int i=StartNum; i<=EndNum; i++) {
sum += i;
oper += i;
if(i<EndNum) {
oper += " + ";
}
}
System.out.println(oper + " = " + sum);
}
}
- 실행결과
예제 2 ) 요구사항 : 아래와 같이 출력하시오.
- 조건 : 홀수는 더하고, 짝수는 빼기연산
- 시작 숫자, 종료숫자 입력받음
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0040 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int sum = 0;
String oper = "";
System.out.print("시작 숫자 : ");
int StartNum = scan.nextInt();
System.out.print("종료 숫자 : ");
int EndNum = scan.nextInt();
for(int i=StartNum; i<=EndNum; i++ ) {
if(i<EndNum) {
if(i%2 == 1) {
sum += i;
oper += i + " - ";
}
if(i%2 == 0) {
sum -=i;
oper += i + " + ";
}
}else if(i==EndNum) {
if(i%2 == 1) {
oper += i;
sum += i;
}
if(i%2 == 0) {
oper += i;
sum -=i;
}
}
}
System.out.println(oper + " = " + sum );
}
}
- 실행결과
예제 3 ) 요구사항 : 아래와 같이 출력
- 조건
- 누적값이 1000을 넘어가는 순간 루프를 종료하시오.
- 소스코드
import java.util.Scanner;
public class Q0041 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int sum = 0;
String oper = "";
System.out.print("시작 숫자를 입력하세요 : ");
int StartNum = scan.nextInt();
for(int i=StartNum; i <= Integer.MAX_VALUE; i++) {
if(sum<1000) {
sum += i;
oper += i + " + " ;
}else if(sum>1000) {
oper = oper.substring(0, oper.length()-3); //마지막 + 연산자를 제거하기 위해 substring 메소드를 통하여 제거
break;
}
}
System.out.println(oper + " = " + sum);
}
}
- 실행결과
예제 4 ) 요구사항 : 서기 1년 1월 1일부터 오늘까지 며칠째인지 구하라.
- 소스코드
package com.test.question;
import java.util.Calendar;
public class Q0042 {
public static void main(String[] args) {
Calendar now = Calendar.getInstance();
String week = "";
int sum = 0;
int year = 0;
int month = 0;
int day = 0;
year = now.get(Calendar.YEAR);
month = now.get(Calendar.MONTH) + 1;
day = now.get(Calendar.DATE);
for(int i=1; i<year; i++) {
if(searchMonth(year)) {
sum += 366;
} else {
sum += 365;
}
}
for(int i=1; i<month; i++) {
sum += getDate(i,year);
}
sum += day;
week = getWeek(sum);
System.out.printf("%d년 %d월 %d일은 %,d일째 되는 날이고 %s입니다.", year, month, day, sum, week);
}//main
public static boolean searchMonth(int year) {
if((year % 4 == 0 && year % 100 != 0) || year % 400 ==0) {
return true;
}else {
return false;
}
} //searchMonth : 윤년 검사
public static int getDate(int month, int year) {
switch (month) {
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 :
return 31;
case 4 :
case 6 :
case 9 :
case 11 :
return 30;
case 2 :
return searchMonth(year) ? 29 : 28;
}
return 0;
} //getDate : 달에 따른 일수
public static String getWeek(int week) {
if (week % 7 == 0) {
return "일요일";
}else if (week % 7 == 1) {
return "월요일";
}else if (week % 7 == 2) {
return "화요일";
}else if (week % 7 == 3) {
return "수요일";
}else if (week % 7 == 4) {
return "목요일";
}else if (week % 7 == 5) {
return "금요일";
}else if (week % 7 == 6) {
return "토요일";
}
return "";
}// getWeek() : 요일 변환기
}
- 실행결과
예제 5 ) 요구사항 : 컴퓨터가 1~10 사이의 숫자 1개를 생각하면 사용자가 맞추는 프로그램을 작성하세요.
- 조건
- 시도 횟수가 10회 넘어가면 프로그램 종료
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0043 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int random = (int)(Math.random()*10);
int num = 0;
System.out.println("컴퓨터가 1~10 사이의 숫자를 1개 생각했습니다.");
System.out.print("(1~10 사이)숫자를 입력하세요 : ");
int inputNum = scan.nextInt();
for(int i=0; i<10; i++) {
if(inputNum!=random) {
System.out.println("틀렸습니다.");
System.out.print("숫자 : ");
inputNum = scan.nextInt();
num++;
System.out.println();
}else if(inputNum==random) {
num++;
System.out.println("맞았습니다.\n");
System.out.printf("컴퓨터가 생각한 숫자는 %d입니다.\n", random);
System.out.printf("정답을 맞추는데 시도한 횟수는 %d회 입니다.\n", num);
break;
}
}
System.out.println();
System.out.println("프로그램을 종료합니다.");
}
}
- 실행결과
예제 6 ) 요구사항 : 숫자를 N개 입력받아 아래와 같이 출력하시오.
- 조건
- 누적값이 100을 넘어가는 순간 루프를 종료
- 짝수는 더하고 홀수는 빼시오
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0044 {
public static void main(String[] args) {
int num = 0;
int sum = 0;
String oper = "";
Scanner scan = new Scanner(System.in);
for(int i=0; i<= Integer.MAX_VALUE; i++) {
if(sum<100) {
System.out.print("숫자 : ");
num = scan.nextInt();
if(num%2==1) {
sum -= num;
oper += "-" + num ;
}else if(num%2==0) {
sum += num;
oper += "+" + num;
}
}else if(sum>=100) {
break;
}
}
System.out.println(oper + " = " + sum);
}
}
- 실행결과
예제 7 ) 요구사항 : 사용자가 입력한 범위의 숫자까지 369 게임을 만들어보시오.
- 조건
- 최대 3자리까지만 입력하시오
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0045 {
public static void main(String[] args) {
String result = "";
Scanner scan = new Scanner(System.in);
System.out.print("최대 숫자 : ");
int num = scan.nextInt();
for(int i=1; i<num; i++) {
result += checkNum(i) + " ";
}
System.out.print(result);
}//main()
public static String checkNum(int a) {
int n = a;
String n2 = String.valueOf(a); //int 형을 String 형으로 변경
if(n % 10 % 3 == 0 && n % 10 != 0) {
return "짝";
}else {
return n2;
}
}
}
- 실행결과
예제 8 ) 요구사항 : 숫자를 10개 입력받아 한글로 변환 후 출력
- 조건 : 1~9까지만 입력하시오
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0046 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = 0;
String result = "";
for(int i=0; i<9; i++) {
System.out.print("숫자 : ");
num = scan.nextInt();
result += transe(num) + " ";
}
System.out.println(result);
}//main
public static String transe(int i) {
if (i == 1) {
return "일";
}else if (i == 2) {
return "이";
}else if (i == 3) {
return "삼";
}else if (i == 4) {
return "사";
}else if (i == 5) {
return "오";
}else if (i == 6) {
return "육";
}else if (i == 7) {
return "칠";
}else if (i == 8) {
return "팔";
}else if (i == 9) {
return "구";
}return "";
}
}
- 실행결과
예제 9 ) 요구사항 : 자판기 프로그램을 구현하시오
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0047 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int inMoney = 0;
int choose = 0;
int coke = 700;
int cyda = 600;
int bita = 500;
for(;;) {
System.out.println("====================");
System.out.println(" 자판기");
System.out.println("====================");
System.out.println("1. 콜라 : 700원");
System.out.println("2. 사이다 : 600원");
System.out.println("3. 비타500 : 500원");
System.out.println("--------------------");
System.out.print("금액 투입(원) : ");
inMoney = scan.nextInt();
System.out.println("--------------------");
System.out.print("음료 선택(번호) : ");
choose = scan.nextInt();
if(choose==1) {
System.out.println("+콜라를 제공합니다.");
System.out.printf("+잔돈 %d원을 제공합니다.\n",(inMoney-coke));
}else if(choose==2) {
System.out.println("+사이다를 제공합니다.");
System.out.printf("+잔돈 %d원을 제공합니다.\n",(inMoney-cyda));
}else if(choose==3) {
System.out.println("+비타 500을 제공합니다.");
System.out.printf("+잔돈 %d원을 제공합니다.\n",(inMoney-bita));
}else {
System.out.println("올바른 값을 입력하세요");
}
System.out.println();
System.out.println("계속하시려면 Enter를 입력하세요.");
String Enter = scan.nextLine();
String Enter2 = scan.nextLine();
}
}
}
- 실행결과
예제 10 ) 요구사항 : 최대 9자리 정수를 입력받아 각자리의 홀수 숫자합과 짝수 숫자합을 구하시오.
- 조건
- int 양수만 입력하시오
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0048 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int sum1 = 0; //홀수의 합
int sum2 = 0; //짝수의 합
System.out.print("숫자 입력 : ");
int num = scan.nextInt();
while(num > 0) {
if (num % 10 % 2 == 0) { //10으로 나누고 2로 나눠지면 짝수
sum2 += num%10;
} else { //그렇지 않으면 홀수
sum1 += num%10;
}
num /= 10;
}
System.out.printf("짝수의 합 : %d\n", sum2);
System.out.printf("홀수의 합 : %d\n", sum1);
}
}
- 실행결과
예제 11 ) 요구사항 : 행의 갯수를 입력 받아 별찍기
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0049 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("행 : ");
int hang = scan.nextInt();
for(int i=0; i<hang; i++) {
for(int j=0; j<i; j++) {
System.out.print(" ");
}
for(int j=0; j<hang-i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
- 실행결과
예제 12 ) 요구사항 : 행의 갯수를 입력받아 별찍기 2
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0050 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("행 : ");
int hang = scan.nextInt();
for(int i=0; i<hang; i++) {
for(int j=0; j<hang-i; j++) {
System.out.print(" ");
}
for(int j=0; j<i+1; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
- 실행결과
예제 13 ) 요구사항 : 트리모양 별찍기
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0051 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("행 : ");
int hang = scan.nextInt();
for(int i=0; i<hang; i++) {
for(int j=0; j<hang-i; j++) {
System.out.print(" ");
}
for(int j=0; j<i; j++) {
System.out.print("*");
}
for(int j=0; j<1; j++) {
System.out.print("*");
}
for(int j=0; j<i; j++) {
System.out.print("*");
}
for(int j=0; j<hang-i; j++) {
System.out.print(" ");
}
System.out.println();
}
}
}
- 실행결과
예제 14) 요구사항 : 영문자로 출력하기
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0052 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("행 : ");
int hang = scan.nextInt();
for(int i=0; i<=hang; i++) {
for(int j=0; j<hang-i; j++) {
System.out.print(" ");
}
char c = 'a';
for(int j=0; j<i*2/2; j++) {
System.out.print(c);
c++;
}
for(int j=0; j<i*2/2; j++) {
c--;
System.out.print(c);
}
System.out.println();
}
}
}
- 실행결과
예제 15 ) 요구사항 : 가로형 구구단을 출력하라
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0053 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
for(int i=2; i<3; i++) {
for(int j=1; j<10; j++) {
System.out.printf("%d x %d = %2d ", i, j, (i+1)*j);
System.out.printf("%d x %d = %2d ", i+1, j, (i+1)*j);
System.out.printf("%d x %d = %2d ", i+2, j, (i+2)*j);
System.out.printf("%d x %d = %2d\n", i+3, j, (i+3)*j);
}
}System.out.println();
for(int i=6; i<7; i++) {
for(int j=1; j<10; j++) {
System.out.printf("%d x %d = %2d ", i, j, i*j);
System.out.printf("%d x %d = %2d ", i+1, j, (i+1)*j);
System.out.printf("%d x %d = %2d ", i+2, j, (i+2)*j);
System.out.printf("%d x %d = %2d\n", i+3, j, (i+3)*j);
}
}
}
}
- 실행결과
예제 16 ) 요구사항 : 2~100 사이의 소수를 구하라.
- 조건
- 소수 : 1과 자기자신으로 밖에 나눠지지 않는 숫자
- 소스코드
package com.test.question;
public class Q0054 {
public static void main(String[] args) {
//2~100 사이의 소수를 구하시오.
boolean check = false;
for(int i=2; i<=100; i++) {
check = false;
for (int j=2; j<i; j++) {
if(i%j==0) {
check = true;
break;
}
}
if(check==false) {
System.out.print(i + ",");
}
}
}
}
- 실행결과
예제 17 ) 요구사항 : 1~100 사이의 완전수를 구하시오
- 조건
- 완전수 : 자기 자신을 제외한 나머지 약수들의 합이 자신과 동일한 수
- 소스코드
package com.test.question;
public class Q0055 {
public static void main(String[] args) {
int sum = 0;
String result = "";
for(int i=1; i<=100; i++) {
sum = 0;
result = "";
for (int j=1; j<i; j++) {
if(i%j==0) {
sum += j;
result += j + ",";
}
}
if(sum==i) {
System.out.printf("%d = [%s]\n", i, result);
}
}
}
}
- 실행결과
예제 18) 요구사항 : 숫자 2개를 입력받아 각각의 약수와 두 숫자 사이의 공약수를 구하라.
- 조건
- 공약수 : 둘 이상의 정수에 공통된 약수
- 소스코드
package com.test.question;
import java.util.Scanner;
public class Q0056 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String result1 = "";
String result2 = "";
String result3 = "";
System.out.print("첫번째 숫자 : ");
int FirstNum = scan.nextInt();
System.out.print("두번째 숫자 : ");
int TwoNum = scan.nextInt();
for(int i=1; i<=FirstNum; i++) {
if(FirstNum%i==0) {
result1 += i+ ", ";
}
}//첫번째 숫자의 최대 공약수
for(int i=1; i<=TwoNum; i++) {
if(TwoNum%i==0) {
result2 += i+ ", ";
}
}//두번째 숫자의 최대 공약수
for(int i=1; i<=FirstNum*TwoNum; i++) {
if(FirstNum%i==0&&TwoNum%i==0) {
result3 += i+", ";
}
}//두수의 공약수
System.out.printf("%d의 약수 : %s\n", FirstNum, result1);
System.out.printf("%d의 약수 : %s\n", TwoNum, result2);
System.out.printf("%d와 %d의 공약수 : %s\n", FirstNum, TwoNum, result3);
}
}
- 실행결과
예제 19 ) 요구사항 : 숫자의 합을 구하라
- 소스코드
package com.test.question;
public class Q0057 {
public static void main(String[] args) {
int sum = 0;
for(int i=1; i<=100; i++) {
sum += i;
if(i==10) {
System.out.printf("1 ~ 10 : %4d\n", sum);
}else if(i==20) {
System.out.printf("1 ~ 20 : %4d\n", sum);
}else if(i==30) {
System.out.printf("1 ~ 30 : %4d\n", sum);
}else if(i==40) {
System.out.printf("1 ~ 40 : %4d\n", sum);
}else if(i==50) {
System.out.printf("1 ~ 50 : %4d\n", sum);
}else if(i==60) {
System.out.printf("1 ~ 60 : %4d\n", sum);
}else if(i==70) {
System.out.printf("1 ~ 70 : %4d\n", sum);
}else if(i==80) {
System.out.printf("1 ~ 80 : %4d\n", sum);
}else if(i==90) {
System.out.printf("1 ~ 90 : %4d\n", sum);
}else if(i==100) {
System.out.printf("1 ~ 100 : %4d\n", sum);
}
}
}
}
- 실행결과
예제 20 ) 요구사항 : 범위에 대한 숫자 합을 구하시오
- 소스코드
package com.test.question;
public class Q0058 {
public static void main(String[] args) {
int sum = 0;
for(int i=1; i<=100; i++) {
sum += i;
if(i==10) {
System.out.printf(" 1 ~ 10 : %3d\n", sum);
sum=0;
}else if(i==20) {
System.out.printf("10 ~ 20 : %3d\n", sum);
sum=0;
}else if(i==30) {
System.out.printf("20 ~ 30 : %3d\n", sum);
sum=0;
}else if(i==40) {
System.out.printf("30 ~ 40 : %3d\n", sum);
sum=0;
}else if(i==50) {
System.out.printf("40 ~ 50 : %3d\n", sum);
sum=0;
}else if(i==60) {
System.out.printf("50 ~ 60 : %3d\n", sum);
sum=0;
}else if(i==70) {
System.out.printf("60 ~ 70 : %3d\n", sum);
sum=0;
}else if(i==80) {
System.out.printf("70 ~ 80 : %3d\n", sum);
sum=0;
}else if(i==90) {
System.out.printf("80 ~ 90 : %3d\n", sum);
sum=0;
}else if(i==100) {
System.out.printf("90 ~ 100 : %3d\n", sum);
}
}
}
}
- 실행결과
'자바' 카테고리의 다른 글
JAVA STEP 21. Array 예제 모음 (0) | 2023.02.14 |
---|---|
JAVA STEP 20. Array (0) | 2023.02.13 |
JAVA STEP 18. if문 & for문 예제 모음 (0) | 2023.02.09 |
JAVA STEP 17. for문 (0) | 2023.02.09 |
JAVA STEP 16. DateTime&if&switch 예제 모음 (0) | 2023.02.08 |