본문 바로가기
  • 문헌정보학도가 개발도 한다구요??
우당탕탕 개발일기/JAVA

JAVA를 배우자(3) - Scanner, 조건문

by 개발하는사서 2021. 1. 7.

자바 로고 수제 그림판 버전. 은근히 그리기 힘들다.

앞에는 소소한 개념들을 배워봤다. 오늘부터는 내가 배운것들을 사용한 코드들을 여기다 붙일 예정.

import java.util.Scanner; //Scanner를 사용하기 위해 import

public class practice210106 {
	public static void main(String[] args) {
		System.out.println("이름, 도시, 나이, 체중, 독신 여부를 빈칸으로 분리하여 입력하세요.");
		System.out.println(Self_Introduce()); //Self_Intriduce 메소드의 결과를 출력
	}
	
	public static String Self_Introduce() {
		Scanner scan_word = new Scanner(System.in); //System.in 은 키보드와 연결된 자바의 표준 입력 스트림이다. 입력되는 키를 바이트로 리턴하는 저수준 스트림.
		String name = scan_word.next(); // .next()는 공백문자를 기준으로 구분되는 토큰으로 나눠 읽음
		String city = scan_word.next();
		int age = scan_word.nextInt();  //만든이가 원하는 자료형으로 읽게 할 수있음.
		double weight = scan_word.nextDouble();
		boolean single = scan_word.nextBoolean();
		System.out.println("이름 : " + name);
		System.out.println("도시 : " + city);
		System.out.println("나이 : " + age + "세");
		System.out.println("몸무게 : " + weight + "Kg");
		System.out.println("결혼 : " + single);
		return null;
	}
}

Scanner를 사용하여 키보드 입력값을 받아 올 수 있다.

사실 이 코드는 메소드를 따로 만들 필요가 없다. 오히려 만드는게 부자연스러운 코드이다. 

그럼에도 이렇게 나눈이유는, main() 안쪽에 쓰다보니까 갑자기 복잡해 보여서 들어낸것이다.

그래서 반환값을 여러개 줄수 없어 null을 반환하도록 처리하고, Self_Introduce 안쪽에서 데이터를 출력하도록 했다.

굳이 반환값을 준다고 하면, Scanner에서 받은 값을 배열로 만들고, 배열을 받아 하나하나 출력하면 될 것 같다.

아래 그림은 Scanner 주요 메소드,

import java.util.Scanner;

public class practice210106 {
	public static void main(String[] args) {
		//System.out.println("이름, 도시, 나이, 체중, 독신 여부를 빈칸으로 분리하여 입력하세요.");
		//System.out.println(Self_Introduce());
		System.out.println(ifelse(3,8));
		System.out.println(ternary(3,8));
	}
    
	public static int ifelse(int a, int b) { //조건문 if(조건) {실행문};
		if(a > b)
			{return a;}
		else
			{return b;}
	}
	
	public static int ternary(int a, int b) { //삼항연산자 opr1?opr2:opr3 = opr1이 true이면, 연산식의 결과는 opr2, false이면 opr3
		int big = (a>b)?a:b;
		return big;
	}
}

//결과값은 둘다 8로 동일

다음은 가정문이다.

여타 언어와 비슷하게 if, else, else if가 있고, 선택지가 여러개일 경우 switch-case도 고려해 볼 수 있겠다.

신기한건 삼항연산자인데, 마치 Python의 lambda함수 처럼 효율적인 코딩을 하게 해준다. (ifelse메소드와 ternary메소드는 같은 의미이다.) 다만 switch문을 사용할땐 각 선택지의 흐름을 고려해야 하며, break를 사용해 다음 선택지로 흘러가지 않도록 하는것이 중요하다.

댓글