티스토리 뷰

Chapter 4. 제어문

 

▶ 학습 목표

: Scanner와   중첩 if문 switch문이 무엇인지 이해하고 사용 목적에 따라 사용할 수 있다.

 

 

- Scanner

: 사용자로부터 입력을 받기 원할 때 사용하는 클래스

사용하고자할시 import java util.Scanner을 추가해주어야한다.

 

*Scanner 와 같이 데이터타입 자리에 검은색인 것은 참조변수이다. 

이러한 참조변수는 주소를 담는다.

 

 

package chapter4;

import java.util.Scanner;

public class exam4_17 
{

	public static void main(String[] args) 
	{
		//재료 확보 : 변수 선언 및 초기화
		int age;
		//변수의 종류 : 정수형, 실수형, 문자형, 논리형, 참조형
		Scanner sc; 
		sc = new Scanner(System.in);
		age = sc.nextInt();
		//String tmp=sc.nextLine();//.은 안에
		//콘솔창에 입력되는 문자를 리턴해준다=nextLine
		System.out.println(age);
		

	}

}

 

*sc.nextLine() 에서 '.' 은 '~안에'라는 뜻으로 sc.nextLine()은 sc 안에 문자를 뜻한다.

 

 

 

 

 

- Scanner를 사용하여 문자 불러오기

 

package chapter4;

import java.util.Scanner;

public class exam4_2 {

	public static void main(String[] args) 
	{
		String ltr;
		
		Scanner tr;
		tr = new Scanner(System.in);
		ltr=tr.nextLine(); 
		System.out.println(ltr);

	}

}

 

* nextLine()은 문자를 불러온다.

 

 

 

 

- Scanner를 사용하여 숫자 불러오기

 

package chapter4;

import java.util.Scanner;

public class exam4_3 {

	public static void main(String[] args) 
	{
		
		int LTR;
		Scanner TR;
		
		TR = new Scanner(System.in);
		LTR = TR.nextInt();
		System.out.println(LTR);
		

	}

}

*nextInt()는 숫자를 불러온다.

 

 

 

 

- Scanner를 사용하여 숫자와 문자 두 개의 값 불러오기.

 

package chapter4;

import java.util.Scanner;

public class exam4_4 {

	public static void main(String[] args) 
	{
		int age; //Step 1 : 변수선언
		
		
		Scanner sc;
		Scanner sd;      //외부 클래스 사용시 import 필수
		
		
		sc = new Scanner(System.in); 
		sd = new Scanner(System.in); //숫자값을 담게되면 문자 불가능하기 때문에 sd로 하나 더 만들어준다.
		
	     // Step 2 : 참조값(객체) 생성 후 담기
		
		
		
		System.out.println("숫자를 입력해주세요 : ");
		age=sc.nextInt();
		
		System.out.println("문자를 입력해주세요 : ");
		String tmp=sd.nextLine();   // Step 3 : 원하는 값 스캔 후 담기
		
		System.out.print(age);
		System.out.println(tmp);      // Step 4 : 입력값 확인하기



	}

}

* sc에 이미 숫자를 불러왔기 때문에 문자를 같이 불러올 수 없다.

* sd를 생성하여 문자를 불러온다.

* Scanner를 사용하기 위해 import jave.util.Scanner; 을 추가해야한다.

 

 

 

 

 

- 문자로 입력받은 값을 비교하기. (문자 = 숫자?)

 

package chapter4;

import java.util.Scanner;

public class exam4_5 {

	public static void main(String[] args) {
		
		int age;
		Scanner input = new Scanner(System.in);
		String tmp = input.nextLine();
		age=Integer.parseInt(tmp);
		
		if(age>19) 
		{
			System.out.println("성인입니다.");
			System.out.println("성인요금이 적용됩니다.");
			
		}
		
		else if(age>13) 
		{
			System.out.println("청소년 입니다.");
			System.out.println("청소년 요금이 적용됩니다.");
			
		}
		
		else 
		{
			System.out.println("유아입니다.");
			System.out.println("유아 요금이 적용됩니다.");
			
		}
		System.out.println("결제를 진행해주세요.");
		


	}

}

위의 코드를 보면 String tmp = input.nextLine(); 명령어로 문자를 입력 받은것을 알 수 있다.

하지만 밑의 if-else if 문은 조건문을 이용한다.

조건문은 숫자 값을 사용하여 참 거짓을 판단하기 때문에 숫자 값이 필요하다.

 

숫자 값을 이용하기 위해 

age=Integer.parseInt(tmp);

명령어를 사용하여 문자를 숫자로 형변환한다.

 

 

*숫자로 보이는 것은 문자로 입력될 수 있다.

하지만, 문자로 입력되면 연산은 불가하다.

 

 

 

 

 

- 중첩 if문

: if 안에 if를 쓰는 문장이다.

 

if(조건1)
{
	//실행부분1
    if(조건2)
    {
    	//실행부분2
    } 
}
else
{
	//실행부분3
}

조건1을 만족하면 실행부분 1을 실행한다.

중첩 if문이므로 조건2도 만족하는지 확인하고 만족한다면 실행부분2를 실행한다.

만약 조건1을 만족하지 않는다면 실행부분3을 실행한다.

 

 

 

ex)

 

package chapter4;

import java.util.Scanner;

public class exam4_6 {

	public static void main(String[] args) {
		
		String id,password;
		Scanner sc = new Scanner(System.in);
		System.out.println("아이디를 입력해주세요 : ");
		id = sc.nextLine();
		
		//제어부
		
		if(id.equals("admin"))   //문자열 비교는 equals
		{
			System.out.println("패스워드를 입력해주세요 : ");
			password = sc.nextLine();
			
			
			if(password.equals("1234")) 
			{
				
				System.out.println("로그인 성공");
				
			}
			
			else 
			{
				
				System.out.println("패스워드 오류");
			
			}
			
		}
		
		else 
		{
			System.out.println("아이디 오류");
		}
		
	}

}

 

 

 

 

- switch 문

: 여러개 중 하나의 값, 값에 따라 동작한다.

하나의 조건식으로 많은 경우의 수를 처리하는 조건문이다.

 

swtich(조건식)
{
	case 값1:
		//조건식의 결과와 값1이 같은 경우 실행
		break;

	case 값2:
		//조건식의 결과와 값2가 같은 경우 실행
		break;

	default:
		//조건식의 결과와 일치하는 값이 없을 때 실행
}

*default는 else와 같은 역할을 한다.

 

 

 

ex)

 

package chapter4;

public class exam4_7 {

	public static void main(String[] args) {
		int book = 2;
		book = book/10;
		
		switch(book) {
		case 0 : 
			System.out.println("조금 더 노력하세요!");
			break;
			
		case 1 : 
			System.out.println("책 읽는 것을 즐기시는 분이시네요!");
			break;
			
		case 2 : 
			System.out.println("책을 사랑하시는 분이시네요!");
			break;
			
        default:
        	System.out.println("당신은 다독왕입니다!");

		}


	}

}

 

 

조금 더 노력하세요!

book의 값이 0이므로 case 0을 "실행 조금 더 노력하세요!"를 출력 후 break;를 만나 종료한다.

 

 

 

 

 

- break; 생략

: break; 는 여기까지 실행하라는 뜻으로 작성하지 않으면 break;를 만날 때 까지 실행한다.

 

switch 문에서는 break;가 각 case마다 포함되어야 한다.

 

package chapter4;

public class exam4_7 {

	public static void main(String[] args) {
		int book = 2;
		book = book/10;
		
		switch(book) {
		case 0 : 
			System.out.println("조금 더 노력하세요!");
			
			
		case 1 : 
			System.out.println("책 읽는 것을 즐기시는 분이시네요!");
			
			
		case 2 : 
			System.out.println("책을 사랑하시는 분이시네요!");
			
			
		default : 
			System.out.println("당신은 다독왕입니다.");
		}

	}

}

 

break;는 실행을 여기까지 하라는 뜻으로 

위의 코드와 같이 break; 가 작성되지 않으면 case의 출력값 모두가 출력되기 때문에 원하지 않는 출력 값이 나올 수 있다.

 

조금 더 노력하세요!
책 읽는 것을 즐기는 분이시네요!
책을 사랑하는 분이시네요!
당신은 다독왕입니다!

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday