백준 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 |