SCANNER / 연습문제

woom·2022년 10월 27일
0

JAVA

목록 보기
5/18
post-thumbnail

🌼 Scanner

  • Scanner 클래스 : 입력장치(키보드, 파일 등)로부터 전달된 값을 반환하기 위한 기능을 제공하는 클래스
  • Scanner 클래스 사용하기 위해서는 객체를 생성하여 변수에 저장
    • Scanner 입력 후 [ctrrl]+[space바] → import java.util.Scanner; 생성됨
    • 변수에 저장된 객체를 사용하여 메소드 호출 - 원하는 기능 구현
    • Scanner scanner=new Scanner(System.in) : Scanner 객체 생성
  • System.in 객체를 사용하여 키보드로부터 값을 전달받기 위한 Scanner 객체 생성
    (키보드로부터 값을 전달받아 사용할수있는 스캐너 객체를 만듦)
  • Scanner.nextLine()/nextInt() : 입력값을 전달받아 문자열/정수값 으로 변환하여 반환하는 메소드 (키보드로 입력된 값을 문자열/정수값 으로 반환받아 변수에 저장)
    • 키보드 입력값이 없는 경우 프로그램의 흐름(스레드 - Thread)이 일시 중지
    • 키보드로 값을 입력후 엔터(Enter)를 입력되면 프로그램의 흐름이 다시 실행
    • 키보드로 입력된 값이 자료형과 불일치 할 경우 예외 발생

💡 참고

  • system.out : 출력스트림을 사용하여 값을 화면에 출력하는 기능을 제공(메소드를 제공)하는 객체 (모니터)
  • system.in : 입력스트림을 사용하여 키보드로부터 전달된 값을 입력하는 기능을 제공하는 객체
  • .nextline/int : 키보드로 입력받은 값을 전달받아 문자열/정수값으로 변환하여 반환(돌려줌)하는 메소드

🐣 예제

//프로그램 사용자에게 키보드로 이름과 나이를 입력받아 출력하는 프로그램 작성
import java.util.Scanner; // 다른 위치에 있는 클래스를 불러오다

public class ScannerApp {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);// new : 객체 생성 연산자
		
		System.out.print("이름 입력 >> ");
		String name=scanner.nextLine();
		
		System.out.print("나이 입력 >> ");
		int age=scanner.nextInt();
		
		System.out.println("[결과]"+name+"님의 나이는 "+age+"살입니다.");

		scanner.close();}}//Scanner 객체를 제거하는 메소드




🎀 연습문제1 - 학점 계산

  • 키보드로 점수를 입력받아 학점을 계산하여 출력하는 프로그램
  • 100~90 : A, 89~80 : B, 79~70 : C, 69~60 : D, 59~0 : F
  • 키보드로 입력된 점수가 0~100 범위의 정수값이 아닌 경우 에러메세지 출력 후 재입력되도록 작성
public class InputCheckApp {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		
		int score;
		while(true) {//조건식 대신 [true]를 설정한 경우 무조건 참으로 무한루프 발생 
			System.out.print("점수 입력[0~100] >> ");
			score=scanner.nextInt();
			if(score>=0 && score<=100) break;//입력값이 정상적인 경우 반복문 종료
			System.out.println("[에러]점수는 0~100 범위의 정수값만 입력 가능합니다.");
		}
		String grade="";
		switch (score/10) {
		case 10:
		case 9: grade="A"; break;
		case 8: grade="B"; break;
		case 7: grade="C"; break;
		case 6: grade="D"; break;
		default: grade="F"; break;
		}
		System.out.println("[결과]"+score+"점 >> "+grade+"학점");
		scanner.close(); }}
        
    
    
        

🎀 연습문제2 - 선택 메뉴

  • 키보드로 메뉴 중 하나를 입력받아 선택메뉴에 대한 기능을 제공하는 프로그램
  • [프로그램 종료] 메뉴를 선택하기 전까지 원하는 기능을 계속 제공
  • 선택 메뉴가 존재하지 않을 경우 에러메세지 출력 후 재입력
public class MenuApp {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		
		System.out.println("<<학생 관리 프로그램>>");
		
		while(true) {//무한루프
			//메뉴 출력
			System.out.println("1.학생정보 삽입");
			System.out.println("2.학생정보 변경");
			System.out.println("3.학생정보 삭제");
			System.out.println("4.학생정보 검색");
			System.out.println("5.프로그램 종료");
			
			//메뉴 선택 - 키보드로 정수값을 입력받아 저장
			System.out.print("메뉴 선택[1~5] >> ");
			int choice=scanner.nextInt();
			
			if(choice<0 || choice>5) {//비정상적인 값이 입력된 경우
				System.out.println("[에러]선택된 메뉴가 존재하지 않습니다.\n");
				continue;
			}
			
			if(choice==5) {//[5.프로그램 종료] 메뉴를 선택한 경우
				break;//반복문 종료
			}

			switch (choice) {
			case 1: 
				System.out.println("[결과]학생정보를 삽입 하였습니다.");
				break;
			case 2: 
				System.out.println("[결과]학생정보를 변경 하였습니다.");
				break;
			case 3: 
				System.out.println("[결과]학생정보를 삭제 하였습니다.");
				break;
			case 4: 
				System.out.println("[결과]학생정보를 검색 하였습니다.");
				break;
			}
			System.out.println();
		}
		
		System.out.println("[메세지]학생 관리 프로그램을 종료합니다.");
		scanner.close(); }}




🎀 연습문제3 - scanner

  • 키보드로 정수값을 5번 입력받아 합계를 계산하여 출력하는 프로그램 작성
    • ex) 1번째 정수값 입력 >> 10
      ···
      5번째 정수값 입력 >> 50
      [결과]합계 = 150

import java.util.Scanner;

public class TotalOneExample {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		
		int tot=0;
		for(int i=1;i<=5;i++) {
			System.out.print(i+"번째 정수값 입력 >> ");
			int num=scanner.nextInt();
			tot+=num;}	//입력값을 tot 변수에 누적하여 저장
		
		System.out.println("[결과]합계 = "+tot);
		scanner.close();}



🎀 연습문제4 - scanner

  • 키보드로 정수값을 계속 입력받아 합계를 계산하여 출력하는 프로그램을 작성하세요.
    • 단, 입력된 정수값이 0인 경우 입력을 종료하고 합계 출력
    • ex) 정수값 입력[0:종료] >> 10
      정수값 입력[0:종료] >> 30
      정수값 입력[0:종료] >> 0
      [결과]합계 = 40

import java.util.Scanner;

public class TotalTwoExample {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		
		int tot=0;
		while(true) {
			System.out.print("정수값 입력[0:종료] >> ");
			int num=scanner.nextInt();
			if(num==0) break;
			tot+=num;
		}
		System.out.println("[결과]합계 = "+tot);
		scanner.close(); }}
        
     
     
        

🎀 연습문제5 - 난수값

  • 프로그램으로부터 난수값(불규칙적으로 발생되는 숫자값)을 제공받아 출력하는 프로그램 작성
  • Math 클래스 : 수학 관련 기능을 제공하는 클래스
  • Math.random() : Math클래스에 랜덤이라는 메소드
    → 0.0보다 크거나 작고 1.0보다 작은 실수 난수값을 반환하는 메소드 (0.0<=난수값<1.0)

public class MathRandomApp {
	public static void main(String[] args) {
		for(int i=1;i<=5;i++) {
			System.out.println(i+"번째 실수 난수값 = "+Math.random());}
		

		for(int i=1;i<=5;i++) {
			//(int)(Math.random()*100) 하면 0<=난수값<100 즉 난수값 : 0~99
			System.out.println(i+"번째 정수 난수값 = "+(int)(Math.random()*100));}
		

		for(int i=1;i<=5;i++) {
			//(int)(Math.random()*45)+1 >> 1<=난수값<46 = 난수값 : 1~45
			System.out.println(i+"번째 정수 난수값 = "+((int)(Math.random()*45)+1));}
		
        



🎀 연습문제6 - 가위바위보 게임

  • 가위바위보 게임 프로그램 작성 : 컴퓨터(난수값)와 사용자(키보드 입력값)의 가위바위보 대결
    • 사용자가 이길 경우 대결을 반복 실행하며 질 결우 게임 종료
    • 대결 종료 후 사용자의 승리 횟수 출력

public class RpaGameApp {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int count=0;		//사용자의 승리 횟수를 저장하기 위한 변수
		
		while(true) {		//가위바위보 대결 - 반복 처리
			//컴퓨터에게 가위바위보 중 하나를 제공받아 저장
			// => 1 : 가위, 2 : 바위, 3 : 보
			// => 1~3 범위의 정수값을 난수로 제공받아 저장
			int computer=(int)(Math.random()*3)+1;
			 
			//사용자에게 가위바위보 중 하나를 키보드로 입력받아 저장
			// => 입력값이 1~3 범위의 정수값이 아닌 경우 에러메세지 출력 후 재입력
			int user;
			while(true) {		//입력값 검증을 위한 반복문
				System.out.print("가위바위보[1:가위,2:바위,3:보] >> ");
				user=scanner.nextInt();
				if(user>=1 && user<=3) break;//정상적인 값이 입력된 경우 반복문 종료
				//비정상적이 값이 입력된 경우 에러메세지 출력 후 반복문 실행
				System.out.println("[에러]가위,바위,보 중 하나를 선택하여 입력하세요.");}
			
			//컴퓨터와 사용자의 가위바위보 출력
			System.out.print("[입력]컴퓨터 >> ");
			switch (computer) {
			case 1: System.out.print("가위"); break;
			case 2: System.out.print("바위"); break;
			case 3: System.out.print("보"); break;
			}
			System.out.print(", 사용자 >> ");
			switch (user) {
			case 1: System.out.print("가위"); break;
			case 2: System.out.print("바위"); break;
			case 3: System.out.print("보"); break;
			}
			System.out.println();
			
			//컴퓨터와 사용자의 가위바위보 대결의 승패를 판단하여 출력
			// => 사용자가 이긴 경우 승리횟수를 1 증가하여 저장하고 대결 반복
			// => 사용자가 진 경우 대결 종료 - 반복문 종료
			if(computer==user) {
				System.out.println("[결과]컴퓨터와 사용자가 서로 비겼습니다.");
			} else if(computer==1 && user==2 || computer==2 && user==3 || 
            			computer==3 && user==1) {
				System.out.println("[결과]사용자가 컴퓨터에게 이겼습니다.");
				count++;//승리횟수 1 증가 >> 대결 반복
			} else {
				System.out.println("[결과]사용자가 컴퓨터에게 졌습니다.");
				break;//반복문 종료 - 대결 종료
			}
			System.out.println();}
            
            
		//승리횟수 출력
		if (count==0) {
			System.out.println("사용자가 컴퓨터에게 한번도 이기지 못했습니다.");
		} else {
			System.out.println("사용자가 컴퓨터에게 "+count+"번을 연속적으로 이겼습니다.");
		}
		
		scanner.close();}
        
        



profile
Study Log 📂

0개의 댓글

관련 채용 정보