본문 바로가기
개발 & 기술

[Java] scanner를 이용해서 더하기 연산 계산하기

by chococake 2021. 6. 12.

요즘은 한창 학원 수업을 듣는 중이다. 하루 거의 7시간을 자바만 듣는데 쉽지는 않지만 그나마 학원 개강 전에 예습을 조금 한 터라 할만하다. 자바는 아무래도 여러 가지 문제를 풀어보고 많이 자주 접해보는 것이 중요한 과목인 듯하다. 조금만 달라도 아예 코드가 성립이 안 되는 걸 보면 머리가 터질 것 같지만 그래도 어떻게든 해서 해결하고 나면 나름 상쾌함을 준다.

 

 

오늘은 Scanner를 이용해서 더하기 연산을 하려고 한다. Scanner를 사용하기 위해서는 기본적으로 자바 클래스에서 scanner클래스를 가져와야 한다.

 

 

import java.util.Scanner;

 

 

심플하게 먼저 가져왔다. 그럼 먼저 구현 결과물을 살펴보자.

간단하게 말해서 scan을 통해서 양수 다섯 개의 숫자를 넣으면 알아서 합계가 출력이 되는 로직을 짜려고 한다.

 

가장 먼저 scan 객체를 형성해주었다.

이제 키보드를 통해서 프로그램에 입력할 수 있는 입력장치를 만든 것이다.

 

 

Scanner scan = new Scanner(System.in);

 

사실 그다음부터가 고민이었다. 일단 scan 객체는 형성했는데 어떻게 그다음을 꾸려야 하는 것인가. 그래서 생각하다가 먼저 횟수를 5번으로 제한했다는 걸 먼저 설정해야 좋을 것 같다는 생각이 들었다. 그다음에 그 수가 양수일 경우와 0, 음수일 경우를 나누어서 생각했다. 만약 양수이면 각각의 숫자를 더하고 0과 음수는 걸러내야 한다. 

 

 

for(int i = 1; i<6; i++ ) {
if((num = scan.nextInt()) > 0 ) {
sum += num;
} else 
continue;
}

 

여기서 가장 어려웠던 부분이 스캔해서 들어온 값이 0보다 커다란 것을 어떻게 구현해야 하냐는 것이다. if문 안에 아예 'num이 입력값이다'라고 선언을 하고 그 값이 0보다 크다면 이라는 식으로 if문을 형성하고 0보다 클 경우에는 들어온 값을 다 더한 후 객체 sum에 대입했다.

 

그리고 0이나 음수가 들어올 경우(else)에는 if안의 내용을 건너뛰고 그냥 계속 프로그램이 돌아가도록 다음 횟수로 넘어가게 했다.  또한 여기서 num과 sum 객체를 사용하기 위해서는 이미 for문 밖에서 객체를 형성해야 했다. 그래서 전체적으로 보자면 다음과 같다. 

 

 

int num = 0;
int sum = 0;

for(int i = 1; i<6; i++ ) {
if((num = scan.nextInt()) > 0 ) {
sum += num;
} else 
continue;
}

 

먼저 sum과 num 객체를 전역 변수로 생성했기 때문에 for문 안에서도 사용이 가능하다. 그래서 총 5회를 입력하고 그래서 나온 5개의 숫자의 총합계를 구하게 된다. 5회가 되면 자동적으로 출력하게끔 한다.

 

System.out.println(sum);

 

결과물은 다음과 같다.

 

 

전체 코드는 다음과 같다.

 

 

import java.util.Scanner;


public class review_continueEx02 {


public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

int num = 0;
int sum = 0;

for(int i = 1; i<6; i++ ) {
if((num = scan.nextInt()) > 0 ) {
sum += num;
} else 
continue;
}


System.out.println(sum);


}


}

 

아까도 언급했지만 여기서 가장 중요하다고 느끼는 것은 scan 객체를 형성하고 입력된 값이 num으로 받으면서 동시에 그 값이 0보다 큰가를 생각할 수 있는가이다. 또 양수가 아닌 0이나 음수가 나오면 그냥 건너뛸 수 있게 continue를 넣어주는 것이다. if안의 조건이 맞지 않으면 다시 바로 for문으로 연결하게끔 생각하는 것이 필요하다. 

 

 

댓글