JAVA

[JAVA] 공부 7일차! (2021-07-28)

HJ39 2021. 7. 29. 00:05

튜터링 7일 차! 

이번 튜터링에서는 지금까지 배운 내용들을 점검해보는 시간을 갖게 되었다. 

멘토분이 5문제를 제시하고 맨 마지막 문제는 과제로 남기고 4문제를 풀게 되었다.

 

문제 1

문제 2

문제 3

문제 4

과제

 

 


 

 

  • 문제 1
import java.util.Scanner;

public class Grade_Input {
	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		
		System.out.print("점수(0~100) = ");
		int Grade = sc.nextInt();
		
		if(Grade>90)
			System.out.println("학점은 A입니다.");
		else if(Grade >80)
			System.out.println("학점은 B입니다.");
		else if(Grade >70)
			System.out.println("학점은 C입니다.");
		else if(Grade >60)
			System.out.println("학점은 D입니다.");
		else 
			System.out.println("학점은 F입니다.");
		
		
		sc.close();
	}

}

성적 입력을 받고 학점을 출력하는 문제였는데 매우 쉬운 문제였다

 

 


 

 

  • 문제 2
import java.util.Scanner;

public class Factorial {

	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		System.out.print("n = ");
		double n = sc.nextInt();
		double fac = 1;
		double i=1;
		while(i<=n) {
			fac *=i;
			i++;
		}
		System.out.print(n+"! = "+fac);
		sc.close();
	}
}

입력한 정수의 Factorial을 구하는 문제다

문제에서 while문과 100!이라는 예제가 주여 졌는데 int, long의 초과되는 범위라 멘토분의 조언에 따라 double을 사용했다. 다 작성하고 예제를 보니까 100! 이 있어서 당황했다.

 

 


 

 

  • 문제 3
import java.util.Scanner;

public class Fib_Arr {

	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		int n= sc.nextInt();
		int []fib = new int[20];
		
		fib[0]=0;
		fib[1]=1;
		
		for(int i=2;i<=n;i++) {
			fib[i] = fib[i-1]+fib[i-2];			
		}
		
		System.out.println(fib[n]);

		sc.close();
	}
}

입력받은 숫자의 피보나치수열 값을 구하는 문제다

이번 문제도 쉽게 해결했다.

 

 


 

 

  • 문제 4
class Book {
	String title;
	String author;
	String Company;
	
	
	Book(String title) {
		this.title=title;	
		System.out.println("Book클래스 생성자 호출:");
		System.out.println("제목 = "+this.title);
		System.out.println();
	}

	Book(String title,String author) {
		this.title = title;
		this.author = author;
		System.out.println("Book클래스 생성자 호출:");
		System.out.println("제목 = "+this.title);
		System.out.println("글쓴이 = "+this.author);
		System.out.println();
	}

	Book(String title,String author, String Company) {
		this.title = title;
		this.author = author;
		this.Company = Company;
		System.out.println("Book클래스 생성자 호출:");
		System.out.println("제목 = "+this.title);
		System.out.println("글쓴이 = "+this.author);
		System.out.println("출판사 = "+this.Company);
		System.out.println();
	}
}

public class Book_Prac {
	public static void main(String[] args) {
		Book book1 = new Book("뇌를 자극하는 파이썬");
		Book book2 =new Book("으뜸 파이썬","박동규");
		Book book3 =new Book("점프 투 파이썬","박응용","위키북스");
	}

}

4번 문제는 생성자를 이용하는 문제였다

위 4문제 전부다 매우 쉬움 정도의 난이도였다.

 

 


 

 

  • 과제
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Random;

public class Game_RSP {
	public static void Exit(String player) {
		if (player.equals("끝")) {
			System.out.print("종료합니다.");			
			System.exit(0);			
		}
	}

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		Random random = new Random();

		bw.write("=======================\n"
				+"가위 바위 보 게임을 시작합니다.\n"
				+"=======================\n");
		bw.flush();

		String[] game = { "가위", "바위", "보" };
		String player;

		int win = 0; // 승
		int lose = 0; // 패
		int draw = 0; // 무
		

		while (true) { // 1번 while 게임진행 while문
			int random_Num = random.nextInt(2); // 0이상 2이하의 랜덤숫자 생성
			String Computer = game[random_Num];

			int Com_Check = random_Num;
			int pla_Check = 0;
			
			
			while (true) { // 2번 while 입력을 받는 while문
				boolean check = false;
				bw.write("가위/바위/보)>>");
				bw.flush();
				player = br.readLine();
				Exit(player); // 게임종료 함수

				for (int i = 0; i < 3; i++) { // 가위 바위 보를 입력을 확인
					if (player.equals(game[i])) {
						pla_Check = i;
						check = true;
					}
				}

				if (check == true) // check가 true인경우 2번while탈출
					break;
			} // 2번 while 종료
			
			bw.write("플레이어: " + player + " , "+"컴퓨터: " + Computer +"\n");
			bw.flush();

			Com_Check = (Com_Check + 1) % 3;	//0,1,2를 순회
			/*	ex) player = 가위 , computer = 보
			 * 		pla_Check = 0 , Com_Check = 2
			 * 		(Com_Check + 1) % 3 실행후 -> Com_Check = 0
			 * 		따라서 player 와 computer 가 같은 경우 player 승 
			 */
			
			if (pla_Check == Com_Check) {	//플레이어와 컴퓨터의 인덱스가 같은 경우 플레이어 승
				win++;
				bw.write("플레이어가 이겼습니다.\n"
						+"현재 전적: "+win+" 승 "+draw+" 무 "+lose+" 패 \n");
				bw.flush();
			} 
			else if (pla_Check < Com_Check) {
				draw++;
				bw.write("무승부입니다.\n"
						+"현재 전적: "+win+" 승 "+draw+" 무 "+lose+" 패 \n");
				bw.flush();
			} 
			else {				
				lose++;
				bw.write("컴퓨터가 이겼습니다.\n"
						+"현재 전적: "+win+" 승 "+draw+" 무 "+lose+" 패 \n");
				bw.flush();
			}
		}	
	}
}

마지막 문제는 컴퓨터와 가위바위보 게임을 하는 게임이다.

가위 , 바위 , 보라는 단어만 사용해야 하고 그 외 문자는 다시 입력하게 구현했다.

랜덤 클래스를 이용하여 컴퓨터가 랜덤으로 가위, 바위, 보가 나오게 구현했고 게임 횟수에 따라 나오는 결과 승, 패, 무승부 전적을 출력하게 만들었다.

게임을 그만두고 싶으면 끝이라는 단어를 입력하면 된다.

 

 

문자열 비교하는 부분에서 살짝 당황했지만 다른 부분에서는 쉽게 해결한 거 같다.

 

맨 위로

'JAVA' 카테고리의 다른 글

[JAVA] 튜터링 9일차!(2021-08-02)  (0) 2021.08.03
[JAVA] 튜터링 8일차!!(2021-07-30)  (0) 2021.08.03
[JAVA] 공부 6일차! (2021-07-26)  (0) 2021.07.28
[JAVA] 공부 5일차! (2021-07-23)  (0) 2021.07.24
[JAVA] 공부 4일차! (2021-07-21)  (0) 2021.07.22