☭DEVELOPER/#2 웹개발(자바기반 풀스택)

[BACKEND]JAVA_ECLIPSE05_변수와 시스템 입출력

조반짝 2023. 8. 17. 18:14
728x90
반응형

 

System.out 은 시스템의 표준 출력 장치

out - 표준 출력 장치

int - 표준 입력 장치

System.out.println("출력내용");

모니터로 변수값 출력하기

- print() 메서드

  println() 메서드의 괄호 안에 리터럴을 넣으면 리터럴이 그대로 출력되고 변수를 넣으면 변수에 저장된 값이 출력된다.

 

System : 시스템이 가지고 있는
out : 출력장치로
println(리터럴 또는 변수); : 괄호 안의 내용을 출력하고 행을 바꿔라

 

 


printf() 메소드

 

 

 

print 는 줄바꿈 안됨

println 은 줄바꿈이 됨

printf : 문자열 안에 변수값을 넣을 수 있음

package chapter02.sec04.exam01;

public class PrintfExample {

	public static void main(String[] args) {
		
		int value =123;
		System.out.print("상품의 가격 =" + value ); // 상품의 가격 = 123123
		System.out.println("상품의 가격 =" + value); 
		System.out.println("상품의 가격 =" + value); // 상품의 가격 = 123
		
		//print() 메서드 사용
		System.out.printf("상품의 가격 : %d원\n", value); // 상품의 가격 123원
		System.out.printf("상품의 가격 : %6d원\n", value); //6칸으로 늘림, 나머지 3칸은 빈칸 // 상품의 가격 :  123원 
		System.out.printf("상품의 가격 : %-6d원\n", value); // 상품의 가격 :  123   원
		System.out.printf("상품의 가격 : %06d원\n", value); // 상품의 가격 : 000123원
	}

}

package chapter02.sec04.exam01;

public class PrintfExample {

	public static void main(String[] args) {
		
		int value =123;
		System.out.print("상품의 가격 =" + value ); // 상품의 가격 = 123123
		System.out.println("상품의 가격 =" + value); 
		System.out.println("상품의 가격 =" + value); // 상품의 가격 = 123
		
		//print() 메서드 사용
		System.out.printf("상품의 가격 : %d원\n", value); // 상품의 가격 123원
		System.out.printf("상품의 가격 : %6d원\n", value); //6칸으로 늘림, 나머지 3칸은 빈칸 // 상품의 가격 :  123원 
		System.out.printf("상품의 가격 : %-6d원\n", value); // 상품의 가격 :  123   원
		System.out.printf("상품의 가격 : %06d원\n", value); // 상품의 가격 : 000123원
		
		double area = 3.14159 * 10 * 10;
		System.out.printf("반지름이 %d인 원의 넓이 = %10.2f\n", 10, area); // \n은 줄바꿈 처리함
		// 반지름이 10인 원의 넓이 =    314.16
		
		String name = "장나라";
		String job = "도적";
		System.out.printf("%6d | %-10s | %10s\n", 1, name, job);
	}

}

키보드에서 입력된 내용을 변수에 저장하기

키보드에서 키하나를 입력하면 프로그램에서 숫자로 된 키코드로 읽는다.

키코드를 읽기 위해서는 System.in의 read 사용

 

예외처리코드: 예외가 발생할 떄 어떻게 처리할 것인지 물어봄

add throws declaration 을 선택

exception 선택

컴퓨터는 코드로 이해하기 때문에 a를 입력해도 컴퓨터는 키코드인 97을 출력한다.

Enter 키는 다른 키와는 다르게 캐리지 리턴(CR : 13) 과 
라인 피드(LF : 10)로 구성된 2개의 키코드가 입력됩니다.
2개의 keyCode가 나타납니다.

package chapter02.sec04.exam02;

public class KeyCodeExample {

	public static void main(String[] args) throws Exception {
		
		int keyCode;
		
		//import 정리 단축키 = Ctrl + Shift + O
		keyCode = System.in.read(); //입력값 입력 대기(여기서는 a 입력함)
		System.out.println("keyCode = " + keyCode); //keyCode = 97
		
		keyCode = System.in.read(); //입력값 입력 대기(여기서는 Enter 키 클릭함)
		System.out.println("keyCode = " + keyCode);
		
//		keyCode = 13
//		keyCode = 10
//		Enter 키는 다른 키와는 다르게 캐리지 리턴(CR : 13) 과 
//		라인 피드(LF : 10)로 구성된 2개의 키코드가 입력됩니다.
//		그래서 2개의 keyCode 변수값에 입력 값을 담아서 처리해야합니다.
//		여기서는 위에 keyCode와 아래 keyCode를 활용해서
//		두번에 걸쳐서 System.in.read() 메서드로 읽도럭 처리하였습니다.
		keyCode = System.in.read(); //입력값 입력 대기(여기서는 Enter 키 클릭함)
		System.out.println("keyCode = " + keyCode);
	}
}

//실행결과
//a
//keyCode = 97
//keyCode = 13
//keyCode = 10

반복실행 ContinueKeyCode

while(true) 때문에 무한반복 실행한다. 반복을 종료하려면 console 뷰에서 빨간색 버튼을 클릭해서 강제종료해야한다.

package chapter02.sec04.exam03;


//입력된 키의 개수와 상관없이 키코드 읽기 자바 프로그램 예시 소스 코딩입니다.
// 반복문을 종료하려면, console 뷰에서 우측편 빨간색 버튼을 클릭해야합니다.
public class ContinueKeyCodeExample {

	public static void main(String[] args) throws Exception {
		
		int keyCode;
		
		//while 문에서 조건값을 true로 설정하여, 반복 실행하도록 처리했습니다.
		while (true) {
			keyCode = System.in.read();
			System.out.println("keyCode = " + keyCode);
		}
	}
}

사용자가 q를 입력했을 떄 반복이 중지되게 하려면 다음 예제와 같이 system.in.read()로 읽은 키코드가 113이 될때 break문을 실행하도록 하면 된다.

package chapter02.sec04.exam04;

import java.io.IOException;

//입력된 키의 개수와 상관없이 키코드 읽기 자바 프로그램 예시 소스 코딩입니다.
//반복문을 종료하려면, q 버튼 또는 Q 버튼을  클릭하게합니다
public class ContinueKeyCodeExample {

	public static void main(String[] args) throws Exception {
		
		int keyCode;
		
		//while 문에서 조건값을 true로 설정하여, 반복 실행하도록 처리했습니다.
		while (true) {
			keyCode = System.in.read();
			System.out.println("keyCode = " + keyCode);
			// 만약에(if문) keyCode가 q(113) 또는 Q(81)일 경우, while 반복문을 중지합니다.
			if(keyCode == 113 || keyCode ==81) {
				break;
			}
		}
		System.out.println("프로그램이 종료되었습니다.");
	}
	
}

Scanner  키보드에서 입력된 내용을 문자열로 얻기 

** system.in.read()의 단점키코드를 하나씩 읽기 때문에 2개이상의 키가 조합된 한글을 읽을수 없다.

이러한 단점을 보완하기 위해 자바는 Scanner 클래스를 제공하고 있다.

 

Scanner scanner는 Scanner 타입의 변수 scanner를 선언

new Scanner(System.in)은 시스템으로 입력 장치로부터 읽는 Scanner를 생성하는 코드

생성된 Scanner는 scanner변수에 저장했다가 언제든지 키보드로 읽고싶을 때 scanner.nexLine()메서드를 실행하면 된다.

 

 

package chapter02.sec04.exam05;

import java.util.Scanner;

//키보드에서 입력된 내용을 Scanner 클래스 활용 문자열로 처리하는 자바 프로그램 예시입니다.
public class ScannerExample {

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		String inputData;
		
		while (true) {
			inputData = scanner.nextLine();
			System.out.println("입력된 문자열:\"" + inputData + "\"");
			if(inputData.equals("q") || inputData.equals("Q")) {
				break;
			}
		}
		System.out.println("프로그램 종료");
	}

}

 

== 과 equals 차이

== : 기본타입(byte, short, int, long, float, double, boolean)의 값이 동일한지 비교

equals( ) : 문자열(String)이 동일한지 비교

 

728x90
반응형