티스토리 뷰

 

do while, switch, case, if else, for, else if, break, random, continue 활용한 연습문제 스스로 풀기

 

 

1. 메인 메소드 포함한 실행용 클래스 작성

package logic.test;

//TestMain 에서 Menu 사용

import logic.view.Menu;

public class TestMain {
	
	public static void main(String[] args) {
		
		System.out.println("- 변수/연산자/제어문 연습 -");
        
//       <연습 1>			
//		 TestMain 클래스의 main() 메소드에 구현 내용
//	     => Menu 클래스의 displayMenu() 메소드 실행되게 작성함

		Menu.displayMenu();
		
	
	}

}

 

2. do while switch case 활용하여 메뉴 클래스 작성

package logic.view;

import java.util.Scanner;

//Menu 에서 Function 사용
import logic.controller.Function;

public class Menu {

// <연습 2>
    static Function ftion = new Function();
    
	public static void displayMenu() {
		
	Scanner sc = new Scanner(System.in);
	
	int no;
	
	do {
		System.out.println("------------프로그램 시작------------");
		System.out.println("1. 간단 계산기");
		System.out.println("2. 작은수에서 큰수까지 합계구하기");
		System.out.println("3. 신상정보 확인하기");
		System.out.println("4. 학생정보 확인하기");
		System.out.println("5. 별과 숫자 출력하기");
		System.out.println("6. 난수까지의 합게 구하기");
		System.out.println("7. 구구단");
		System.out.println("8. 주사위 숫자 알아맞추기 게임");
		System.out.println("9. 프로그램 종료");
		
		System.out.print("메뉴 번호 입력 : ");
		
		no = sc.nextInt();
	    
	    switch (no) {
	    case 1: ftion.calculator();  break;
	    case 2: ftion.totalCalculator();  break;
	    case 3: ftion.profile();  break;
	    case 4: ftion.sungjuk();  break;
	    case 5: ftion.printStarNumber();  break;
	    case 6: ftion.sumRandomNumber();  break;
	    case 7: ftion.continueGugudan();  break;
	    case 8: ftion.shutNumber();  break;
	    case 9: System.out.println("------------프로그램 종료------------"); break;
	    }
	
	} while (true);

  }
	
}

 

3. 기능제공용 클래스에 구현될 프로그램의 내용 작성

package logic.controller;

import java.util.Random;
import java.util.Scanner;

public class Function {
	// -----------<연습3>-----------
	// => 메뉴에서 실행시킬 메소드들을 작성함 : 모두 non-static 메소드로 작성할 것
	// => 키보드 입력을 위한 Scanner 클래스에 대한 레퍼런스 변수를 필드로 선언함
	
	private Scanner sc = new Scanner(System.in);

	// -----------<연습4>-----------
	public void calculator() {
		System.out.println("----------1. 간단 계산기-----------");
    //switch 사용
		
		System.out.print("계산할 첫번째 숫자를 입력하세요 : ");
		int num1 = sc.nextInt();
		System.out.print("계산할 두번째 숫자를 입력하세요 : ");
		int num2 = sc.nextInt();
        System.out.print("연산문자 입력[+, -, *, /] : ");
        char cal = sc.next().charAt(0);
		     
		switch (cal) {
		case '+': 
			System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
			break;
		case '-':
			System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));
			break;
		case '*':
			System.out.println(num1 + " * " + num2 + " = " + (num1 * num2));
			break;
		case '/':
			
			if (num2 == 0) {
				System.out.println("0으로 나눌 수 없습니다.");
				System.out.println(num1 + " / " + num2 + " = " + 0);
			}else {
			System.out.println(num1 + " / " + num2 + " = " + (num1 / num2));
			}
			break;
			
			}	    
			
		}
	
	// ----------<연습5>----------
	public void totalCalculator() {
		
		System.out.println("----------2. 작은수에서 큰수까지 합계구하기-----------");
		
		System.out.print("정수1 입력 : ");
		int num1 = sc.nextInt();
		System.out.print("정수2 입력 : ");
		int num2 = sc.nextInt();
		
		int max = 0;
		int min = 0;
		int sum = 0;
		
		if (num1 > num2) {
			max = num1;
			min = num2;
		} else if (num1 < num2) {
			max = num2;
			min = num1;
		} else if (num1 == num2) {
			System.out.println("정수1과 정수2는 다른 수여야 합니다.");
		    return;
		}
		 for (int i = min; i < max; i++) {
			 
			 sum = sum + i;
		
		 }
		 System.out.println(min + "부터 " + max + "까지 " + "정수들의 합계 : " + sum);

	}
	
	// ----------<연습6>----------
	public void profile() {
		
		System.out.println("----------3. 신상정보 확인하기-----------");
		
		System.out.println("본인 확익을 위해 필수 개인정보를 입력받습니다.");
		
		System.out.print("이름 : ");
		String name = sc.next();
		System.out.print("나이 : ");
		String age = sc.next();
		System.out.print("성별 : ");
		String gender = sc.next();
		System.out.print("성격 : ");
		String unique = sc.next();
		
		System.out.println("입력하신 내용을 확인해주세요.");
		System.out.println("이름 : " + name);
		System.out.println("나이 : " + age);
		System.out.println("성별 : " + gender);
		System.out.println("성격 : " + unique);
	}
	
	//  ----------<연습7>----------
	public void sungjuk() {
		
		System.out.println("----------4. 학생정보 확인하기-----------");
		
		System.out.println("학생의 정보를 입력해주세요.");
		System.out.print("학생이름 : ");
		String name = sc.next();
		System.out.print("학년 : ");
		int grade = sc.nextInt();
        System.out.print("반 : ");
        int classs = sc.nextInt();
        System.out.print("번호 : ");
        int number = sc.nextInt();
        System.out.print("성별(M/F) : ");
        char gender = sc.next().charAt(0);
        System.out.print("성적 : ");
        double score = sc.nextDouble();
		
        //String result;
        char result = 0;
                
        if(score >= 90) {
        	result = 'A';
        }else if(score >= 80) {
        	result = 'B';
        }else if(score >= 70) {
        	result = 'C';
        }else if(score >= 60) {
        	result = 'D';
        }else if(score < 60) {
        	result = 'F';
        } 
        
		System.out.println(grade + "학년 " + classs + "반 " + number + "번 " + (gender == 'M' ? "남학생" : "여학생") + " " + name + "의 점수는 " + score + "이고, " + result + "학점입니다.");
	}
	
	// ----------<연습8>----------
	public void printStarNumber() {
		
		System.out.println("----------5. 별과 숫자 출력하기-----------");
		
		System.out.print("정수 입력[출력할 줄 수] : ");
		int num = sc.nextInt();
		
		int line = 0;
		int star = 0;
		
		if(num > 0) {
			for (line = 1; line <= num; line++) {
			
				for (star = 1; star < line; star++) {
					System.out.print("*");
				}
				
				for (star = 1; star == (line-(line-1)); star++) {
					System.out.print(line);
				}
				System.out.println();
			}
		} else if(num < 0) {
			System.out.println("양수가 아닙니다.");
		}
			
		System.out.println();
		
		
	}
	
	// ----------<연습9>----------
	public void sumRandomNumber() {

		System.out.println("----------6. 난수까지의 합계 구하기-----------");
		
		int value = new Random().nextInt(100) + 1;
		int i = 0;
		int sum = 0;
		
			for (i = 1; i <= value; i++) {
				sum = sum + i;
			}
			System.out.println("임의로 선택된 정수 : " + value);
		    System.out.println("1부터 정수까지의 합계 : " + sum);
		
	}
	
	// ----------<연습10>----------
	public void continueGugudan() {
			
		System.out.println("----------7. 구구단-----------");
		
		while(true)
		{
			System.out.print("정수 하나 입력 : ");
			int num = sc.nextInt();
			
			if(num < 0) {
				System.out.println("양수가 아닙니다.");
				break;
				
			}
			for(int i = 1; i <=9; i++) {
				if(i % num == 0) {
					System.out.print("");
				}else {
				System.out.println(num + " * " + i + " = " + num * i);
				}
			}
				
			break;
		}
		
	}
	
	// ----------<연습11>----------
	public void shutNumber() {
		
		System.out.println("----------8. 주사위 숫자 알아맞추기 게임-----------");
		
		do {
           
			int num1 = 0;
			int num2 = 0;
			int sum = 0;
			
			num1 = (int)(Math.random() * (6-1+1) + 1);
			num2 = (int)(Math.random() * (6-1+1) + 1);
			sum = num1 + num2;
			
			System.out.println("주사위1 : " + num1);
			System.out.println("주사위2 : " + num2);
			System.out.println("주사위1과 주사위2의 합 : " + sum);
			System.out.println("--두 주사위의 합이 주사위1 또는 주사위2의 값과 같은가?--");
			
			if (sum == num1 || sum == num2) {
				System.out.println("맞췄습니다."); 
								
			}else {
				System.out.println("틀렸습니다.");	
			}
			
			System.out.print("계속하시겠습니까?(y/n) : "); 
		  
			String ch = sc.next();
			
			if (ch.equals("n") || ch.equals("N")) {
				System.out.println("종료합니다.");
			} else if (ch.equals("y") || ch.equals("Y")) {
				continue;
			}
			 break;
			
		} while(true);        
        
	}
		
}

 

 

<연습 3>
패키지 선언 : logic.controller
클래스명 : public class Function
=> 메뉴에서 실행시킬 메소드들을 작성함 : 모두 non-static 메소드로 작성할 것
=> 키보드 입력을 위한 Scanner 클래스에 대한 레퍼런스 변수를 필드로 선언함
----------------------------------------


<연습 4>
=> 메소드 작성 : public void calculator(){}
=> 처리내용
1. 정수 두 개와 연산문자 하나를 키보드로 입력받음
첫번째 정수 : 12
두번째 정수 : 5
연산문자 : x
2. 두 정수값은 int 변수에 저장
3. 연산문자는 char 변수에 저장
4. switch 문 사용
: 연산 문자가 
'+' 이면, 두 정수의 합 계산
'-' 면 , 두 정수의 차 계산
'x' 또는 'X' 이면, 두 정수의 곱
'/' 이면 , 두 정수의 나누기 몫

단, 나누는 수(두번째 정수)가 0이면
"0으로 나눌 수 없습니다." 출력되게 하고, 
결과값 0 처리함을 계산처리 후 


5. 결과 출력
    예> 10 x 20 = 200

----------------------------------------

 

<연습 5>
=> 메소드명 : public void totalCalculator(){}
=> 처리내용
1. 키보드로 두 개의 정수를 입력받음
2. 두 정수중 작은 값을 시작값으로,
    큰 값을 종료값으로 사용함
3. 작은값에서 큰값까지 정수의 합계를 구함
: for 문 사용

예>int i
12  3    입력시
3 ~ 12 까지 정수의 합을 구함
3+4+5+....+12
4. 합계 출력 처리
3부터 12까지 정수들의 합계 : 결과값
----------------------------------------

 

<연습 6>
=> 메소드명 : public void profile(){}
=> 처리내용 : 신상정보들을 자료형에 맞춰 변수에 기록하고,
변수에 기록된 값을 출력 확인함.
실행내용 : 콘솔창에 본인의 신상정보가 출력되게 함
출력예>
이름 : 엘리스
나이 : 17 세
성별 : 여자
성격 : 창의적임
----------------------------------------

 

<연습 7>
=> 메소드명 : public void sungjuk()
=> 처리내용
변수 선언하고, 키보드로 입력받은 값들을 변수에 기록하고
변수값을 화면에 출력 확인함
=> 변수 
학생이름 (String)
학년 (int)
반 (int)
번호 (int)
성별(M/F) (char) //문자열로 입력받은 후, 문자하나 분리해야 함
성적 (double) //소숫점 아래 둘째자리까지 입력받음
학점 (char)
점수가 

90 이상이면 학점을 A 로 처리
80 이상 90 미만 B
70 이상 80 미만 C
60 이상 70 미만 D
60 미만 F

출력예>
3학년 2반 25번 남학생 홍길동의 점수는 95.5이고, A 학점입니다.
** 남학생/여학생은 성별 변수의 값을 사용해서 삼항연산자로 처리
----------------------------------------

 

<연습 8>
정수를 하나 입력받아, 그 수가 양수일 때만
입력된 수를 줄 수로 적용하여 다음과 같이 출력되게 함

- if문과 이중 for문 사용
- 메소드명 : public void printStarNumber(){}

ex>
정수 하나 입력 : 5
1
*2
**3
***4
****5
================
정수 하나 입력 : -5
양수가 아닙니다.
----------------------------------------

 

<연습 9>
1~100 사이의 정수중 임의의 정수를 하나 발생시켜

1부터 발생된 정수까지의 합계를 구하여 출력함
 - 메소드명 : public void sumRandomNumber(){}

----------------------------------------

 

<연습 10>
정수를 하나 입력받아, 그 수가 양수일 때만 그 수의 구구단이 출력되게 함.
단, 곱하기 결과가 입력받은 정수의 배수인 값을 출력에서 제외함.
- if문과 for문, continue문 사용

- 메소드명 : public void continueGugudan(){}

ex>
단수 : 3
제외할 배수 : 9

3 * 1 = 3
3 * 2 = 6
3 * 4 = 12
3 * 5 = 15
3 * 7 = 21
3 * 8 = 24
================
정수 하나 입력 : -7
양수가 아닙니다.

----------------------------------------

 

<연습 11>
메소드명 : public void shutNumber(){}
구현내용 : 
1) 두 개의 주사위가 만들어 낼 수 있는 모든 경우의 수중(random)
2) 두 주사위 눈의 합이 입력된 수와 같은 경우 "맞췄습니다." 출력
3) 입력값과 다르면 "틀렸습니다." 출력함.
4) do ~ while 문으로 반복되게 함
5) "계속하시겠습니까?(y/n) : " 에서 'n' 또는 'N' 입력시 반복종료됨

댓글
최근에 올라온 글
페이지 이동 안내

보던 글 목록 : 브라우저 뒤로 가기 메인 화면 : 좌측 상단 아이콘
🍍 The GOAL: AI expert에 가까워지는 중

🍍 I am becoming AI expert who can develop cool things by coding.