백준 10952 - java ) A+B-5

2021. 8. 24. 17:06코딩/Python

내 사고과정 

입력의 마지막에 0 0이 들어가는 이유는 대체 무엇일까.. 

그리고 정작 출력 부분에는 0이 들어가있지도 않다. 

 

내 실행코드 

 

import java.util.Scanner; 

public class Test {
	public static void main(String[] args) {
	
	Scanner sc = new Scanner(System.in);
	int a = sc.nextInt();
	int b = sc.nextInt();
	sc.close();
	
	while(0<a && b<10) {
		System.out.println(a+b);
	}
	  
	  }
	}

위와 같이 작성했더니 무한루프가 돌았다. sc.close();를 했는데도 왜 무한루프가 돌았던 걸까? 

 


수정한 코드 

import java.util.Scanner; 

public class Test {
	public static void main(String[] args) {
	
	Scanner sc = new Scanner(System.in);
	
	while(true){
		
		int a = sc.nextInt();
		int b = sc.nextInt();
		
		if(a==0 && b==0) {
			sc.close();
			
			break;
		}
		System.out.println(a+b);
	}
	  }
	}

0 0을 입력받는 이유는 프로그램에서 사용자로부터 입력을 그만 받는 '종결 조건'이었던 것이다. 

그래서 if문을 이용하여 a와 b가 0일때 Scanner 입력을 그만 받고, break로 종료한다. 

a와 b가 0이 아니라면 a+b의 값을 계속 출력한다. 

 

* while에 조건식 대신 true를 지정하면 무한루프가 만들어진다. 따라서 조건식이 항상 참이므로 변화식도 필요 없다. 

조건이 true일 때 계속 반복하는 것이다. 그래서 이 코드에서는 0 0을 입력함으로써 break;로 반복문 탈출! 

 

수정된 실행 결과 

1 4 
5
2 3 
5
3 3 
6
0 0

0 0에서 더이상 숫자 입력을 받지 않는다 - sc.close()되어서 

'코딩 > Python' 카테고리의 다른 글

백준 1110 - java ) 더하기 사이클 (*)  (0) 2021.08.24
백준 10951 - java ) A+B-4  (1) 2021.08.24
백준 10871 - java ) X보다 작은 수  (0) 2021.08.24
백준 2439 - java ) 별찍기-2  (0) 2021.08.24
백준 2438 - java ) 별 찍기-1  (0) 2021.08.24