[10951/JAVA] A+B - 4Knowledge/Algorithm2023. 12. 23. 11:36
Table of Contents
728x90
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력 조건
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0<A, B<10)
출력 조건
각 테스트 케이스마다 A+B를 출력한다.
풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()) {
int A = sc.nextInt();
int B = sc.nextInt();
System.out.println(A + B);
}
sc.close();
}
}
정상 출력 됐다.
처음 작성할 때, nextInt() 메서드를 while문의 true조건에 넣었는데 계속 컴파일 에러가 나서 한참 헤매다보니
hasNextInt() 와 nextInt() 는 서로 다른 역할을 하는 메소드입니다.
hasNextInt() 는 다음 입력이 int 타입으로 해석될 수 있는지 확인하는 메소드로 boolean 값을 반환합니다. 반면에
nextInt() 는 다음 입력을 int 타입으로 해석하여 반환하는 메소드로 int 값을 반환합니다.
nextInt()는 while문의 조건으로는 들어갈 수 없다고 한다.
그렇기 때문에 hasNextInt를 사용하게 되면
while(sc.hasNextInt())
이 코드는 "다음 입력이 int 타입으로 해석될 수 있는 경우 계속 반복하라"로 해석이 되고,
while(sc.nextInt())의 경우 nextInt()가 반환하는 값이 정수이고, 조건문에서는 boolean 타입이 반드시 필요하기 때문이다. 그렇기 때문에 컴파일 단계에서 에러가 뜬다? 라고 한다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) { // 입력이 있을 때까지 반복
int A = scanner.nextInt();
int B = scanner.nextInt();
if (A > 0 && B < 10) { // 문제 조건에 맞는 경우에만 출력
System.out.println(A + B);
}
}
scanner.close(); // 스캐너 리소스를 닫음
}
}
입력조건을 빼먹어서 다시 작성했다.
이유는 모르겠지만 입력조건이 없어도 통과가 되고... 있어도 통과가 된다.
hasNextInt() 라는 메서드를 몰라서 끝까지 혼자 해보려고 했으면 못풀었을지도...?
정리
내가 모르는 메서드들이 너무나도 많다... 갈 길이 멀다😡
728x90
'Knowledge > Algorithm' 카테고리의 다른 글
[2438/JAVA] 별 찍기 - 1 (0) | 2023.12.30 |
---|---|
[10872/JAVA] 팩토리얼 (0) | 2023.12.29 |
[2420/JAVA] 사파리월드 (1) | 2023.12.22 |
[2753/JAVA] 윤년 (0) | 2023.12.21 |
[14681/JAVA] 사분면 고르기 (0) | 2023.12.20 |
@Marty_ :: 소리 지르고 싶다.
쓰임 있는 사람이 되기 위해 노력 중입니다.