자바

JAVA STEP 19. for문 예제모음

IT의 큰손 2023. 2. 10. 21:59
728x90

예제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);

	}

}
  • 실행결과

예제 1 실행결과

 

예제 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 );
	}

}
  • 실행결과

예제 2 실행결과

 

예제 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);

	}

}
  • 실행결과

예제 3 실행결과

 

예제 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() : 요일 변환기
}
  • 실행결과

예제 4 실행결과

 

예제 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("프로그램을 종료합니다.");

	}

}
  • 실행결과

예제 5 실행결과

 

예제 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);

	}

}
  • 실행결과

예제 6 실행결과

 

예제 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;
		}
	}
}
  • 실행결과

예제 7 실행결과

 

예제 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 "";
		
	}
}
  • 실행결과

예제 8 실행결과

 

예제 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();
			
			
		}

	}
	

}
  • 실행결과

예제 9 실행결과

 

예제 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);
		
	}

}
  • 실행결과

예제 10 실행결과

 

예제 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();
			
		}

	}

}
  • 실행결과

예제 11 실행결과

 

예제 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();
			
		}

	}


}
  • 실행결과

예제 12 실행결과

 

예제 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();
			
		}

	}


}
  • 실행결과

예제 13 실행결과

 

예제 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();
			
		}

	}

	

}
  • 실행결과

예제 14 실행결과

 

예제 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);
			}
		}
	}
		

}
  • 실행결과

예제 15 실행결과

 

예제 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 + ",");
			}
		}
		
	}

}
  • 실행결과

예제 16 실행결과

 

예제 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);
			}
		}

	}

}
  • 실행결과

예제 17 실행결과

 

예제 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);
		
	}

}
  • 실행결과

예제 18 실행결과

 

예제 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);
			}
		}

	}

}
  • 실행결과

예제 19 실행결과

 

예제 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);
			}
		}

	}

}
  • 실행결과

예제 20 실행결과

 

728x90