728x90
반응형
https://www.acmicpc.net/problem/10869
10869번: 사칙연산
두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
BAEKJOON에서 사칙연산 문제 풀다가
계속 오류가 나
무슨 문제인가 하고서 생각을 하고, 다른 사람들의 정답을 봐본 결과
sc.close();
를 안닫아줘서
컴파일 에러 및 런타임 에러가 났었다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
sc.close();
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
}
내가 풀이한 정답이다.
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
System.out.println(a%b);
}
}
내가 처음 풀었을때의 코드이다.
이번에 문제를 풀면서
sc.close(); 하나 때문에 아직 배우지 않은 스프링의 내용 중 한 부분을 알게 되었다.
sc.close(); 해야하는 이유 및 resource를 사용하는 경우
JAVA에서 resource는 외부의 데이터(DB, Network, File)인데,
이런 데이터들은 JAVA 내부에 위치한 요소가 아니기 때문에
프로세스 외부에 있는 데이터에 자바코드에서 접근하려고 하면 문제가 발생할 여지가 있음
특히, 입출력에 관련된 resource에 접근해 사용 중 그 resource를 사용 중에 다른 곳에서
같은 resource에 접근하여 사용하다보면 코드가 꼬일 수 있어 한 입출력에서 resource를
사용했다면, sc.close();를 사용하여 닫아주는것이 제일 좋다.
728x90
반응형
'JAVA(폐쇄) > 독학내용' 카테고리의 다른 글
자바(JAVA) charAt(int i)-'0' 는 뭘까? (0) | 2023.03.22 |
---|---|
JAVA) %(모듈러) 모듈러 연산, 나머지 연산자 (0) | 2023.02.15 |
Java - index 란? (2) | 2023.02.05 |