본문 바로가기
개발일지

개발일지 6일차 - <Scanner, 자바 제어문>

by 태운콩즙 2023. 12. 1.
728x90
반응형

오늘 수업은 Scanner 클래스와 자바 제어문을 배웠다

 

<Scanner 클래스>

콘솔에서 사용자의 입력을 받아줄 수 있는 클래스
java.utill 패키지에서 제공

 

1 사용방법

a 스캐너 클래스 객체를 선언 하고 활용해야 함.
b. 객체 선언 방법

Scanner[ 객체이름] = new Scanner(System.in);

//객체 이름을 sc 라고 한다면

Scanner sc = new Scanner(System.in);

// 객체 이름을 scanner 이라고 한다면

Scanner scanner = new Scanner(System.in);

c. 객체 이름은 클래스 이름(Scanner)과 똑같지만 않다면 아무 이름이나 선언 가능하며, 선언 후 객체 이름으로 Scanner 클래스에
서 제공하는 여러 메서드(Method)를 활용할수있음

 

스케너 클래스를 사용하려면

 

 import 를 쓴 후 해당 클래스 경로를 호출하도록 한다.

 

package ch03_scanner;

// java.utill 패키지에 소속된 Scanner 클래스를 가져옴
import java.util.Scanner;

public class Ex01_Scanner {

	public static void main(String[] args) {
		// scanner 라는 이름에 Scanner 클래스 객체 선언
		
		Scanner scanner = new Scanner(System.in);
		//ln 이라는 명령어는 그 다음줄에 출력을 하는것이기 때문에 생략
		System.out.print("숫자를 입력하세요: ");
		int num1 = scanner.nextInt();
		System.out.println(num1);

	}

}

 

주의할점은 Scanner을 생성할때 System.in이 들어간다는 점이다

System.in은 사용자로 부터 입력을 받기 위한 입력 스트림이다

위의 코드를 콘솔에서 출력을 해보면

 

콘솔에서 값을 입력 하여 도출할수있다



2 주요 메서드

a. nextInt(): 정수값(int)을 입력받을 수 있음.

b. next(): 문자열(String)값을 입력받을 수 있음 띄어쓰기. 전까지 값만 저장 가능.

c. nextLine(): 엔터 입력 전까지의 문자열 값을 입력 받을 수 있음.

d. nextDouble(),nextBoolean() 등 자바의 기본 타입 변수를 받아주는 메서드 각각 있음.

3 활용 예


Scanner scanner = new Scanner(System.in);

// 정수를 입력받아 num1 이라는 변수에 저장
// 우변: scanner 클래스 객체가 가지고 있는 nextInt() 메서드를 호출하고
// 좌변: 호출 결과를 num1에 대입한다.
int num1 = scanner.nextInt();

package ch03_scanner;

import java.util.Scanner;

public class Ex02_calculator {

	public static void main(String[] args) {
		/**
		 * 정수 2개를 각각 스캐너로 num1, num2에 입력 받은 수의 합을 출력하세요.
		 */
		
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("첫번째 수: ");
		int num1 = scanner.nextInt();
		System.out.print("두번째 수: ");
		int num2 = scanner.nextInt();
		int sum = num1 + num2;
		System.out.println("합계: "+ sum);
		System.out.println(num1 + "과 " + num2 + "의 합계는 " + sum + "입니다.");
		System.out.println(num1 + "+ " + num2 + "=");
		System.out.print(num1+num2);
		
		System.out.print("이름을 입력하세요: ");
		String name = scanner.next();
		System.out.println(name);

 

Scanner을 사용하여 간단한 계산식을 만들어보았다

 

위에서 말했드시 nextInt()는 정수값을 입력받을수있기고

 

주소와같이 띄어쓰기가 필요한경우는

	//띄어쓰기가 필요한 경우 nextLine를 사용한다
		
		scanner.nextLine();  // 중간에 scanner.nextLine를 사용하면 해결됨
		
		// next 다음 nextLine를 사용할경우 작동이 안되는 경우가 많다
		System.out.println("주소를 입력하세요: ");
		String address = scanner.nextLine(); 
		System.out.print(address);
	}

}

nextLine를 사용하여 출력을 하면된다

 

<자바 제어문>

코드가 순서대로 진행되지 않고 조건에 따라 일부분만 실행하거나, 일부 코드를 반복하여 실행할수 있도록 하는 문법

제어문에는 조건문 과 반복문이 있다

 

조건문은 이전에 배웠던 if문이 있다

 

if문은 boolean타입의 변수 또는 식이 올 수있고

else에서는 조건식을 쓰지않는다

package ch04_if;

public class Ex01_ifBasic {

	public static void main(String[] args) {
		
		//if문
		
		System.out.println("if문 전");
		boolean cond = false;
		if (cond) { 
			System.out.println("조건을 만족하면 내가 보임");
		}
		System.out.println("if믄 후");
		
		// if else
		System.out.println("if else문 전");
		if (cond) {
			System.out.println("조건 만족");
	
		}else {
			System.out.println("조건 만족하지 않음");
		}
		System.out.println("if else문 후");
		
		int num1 = 10, num2 = 20;
		
		if (num1 < num2) {
			System.out.println("num2가 크다");
		} else { // num1 >= num2
			System.out.println("num1이 num2 보다 크거나 같다");
			
			//if slse if
			if(num1 > num2) {
				System.out.println("num1이 크다");
			}else if(num1 < num2){
				System.out.println("num2가 크다");
			}else if(num1 == num2) {
				System.out.println("둘이 같다");
			}else {
				System.out.println("비교 불가");
			}
		}

	}

}

여러 조건을 걸어서 if문으로 성적표를 출력 하려면

package ch04_if;

import java.util.Scanner;

public class Ex03_ifExample {

	public static void main(String[] args) {
		/**
		 * 스캐너로 점수(score)를 하나 입력받아서
		 * 90점 이상이면 A
		 * 80점 이상이면 B
		 * 70점 이상이면 C
		 * 60점 이상이면 D
		 * 60점 보다 적은 점수면 F
		 * 를 출력
		 */
		
		Scanner scanner=new Scanner(System.in);
		
		int score = 0;
		System.out.print("점수를 입력하세요");
		score = scanner.nextInt();
		if(score >=90) {
			System.out.println("A입니다");
		}else if(score >=80) {
			System.out.println("B입니다");
		}else if(score >=70 ) {
			System.out.println("C입니다");
		}else if(score >=60) {
			System.out.println("D입니다");
		}else {
			System.out.println("F입니다");
		}
		
	}

}

위 코드와 같이 각각 조건문을 넣어서 출력을 해주면 된다

하지만 위와같이 하게된다면 각각 조건문을 정해주어야 하기때문에 중첩 if문을 사용해주면

System.out.println을 한번만 입력해주어도 된다

 

중첩if문이란 하나의 조건을 만족한 상태에서 다른 조건을 더 따져보는것인데

 

문법은

 

if([조건1]){
   if([조건2]){
} else if ([조건3]){
   조건 1,3 을 모두 만족하는경우
}else {
   조건 1을 만족하지만 2,3은 만족하지 않는경우
}else{
  조건1을 만족하지 않으면 바로 이 부분이 실행
}

 

이다

중첩 if문으로 위와 같은 코드를 짜게되면

package ch04_if;

import java.util.Scanner;

public class Ex04_ifExample {

	public static void main(String[] args) {
		/**
		 * 중첩 if 문을 적용한 학점 출력
		 * 100 점을 초과하거나 0점 미만의 점수를 입력하면 '입력범위를 초과하였습니다.'출력
		 * 0~100 점 사이의 값을 입력했다면 앞의 예제에서 했던 학점 출력을 진행함
		 * 단, 각 조건마다 학점값을 출력하는 것이 아니라 학점 출력을 위한 print 문장은 한번만 사용
		 */
		
		Scanner scnner = new Scanner(System.in);
		int score = 0;
		System.out.print("점수를 입력 하세요: ");
		score = scnner.nextInt();
		String grade="";
		if(score > 100 || score< 0) {
			System.out.println("범위를 초과하였습니다");
			}else {
				if(score >=90) {
					grade = "A";
				}else if(score >=80) {
					grade = "B";
				}else if(score >=70 ) {
					grade = "C";
				}else if(score >=60) {
					grade = "D";
				}else  {
					grade = "F";
			}
				System.out.println(grade);
			}
					}
	}

 

위와 같이 코드를 짤수있다

처음 int score 로 값의 범위를 지정하고

String grade 변수로 학점값을 지정해준뒤

조건값을 정해준뒤 출력을 할수있다

728x90
반응형