본문 바로가기

JAVA

자바 계산기 프로그램 만들기 (백준 1000번, 1008번, 사칙연산 정답 코드)

어떤 프로그래밍 언어이든 덧셈, 나눗셈 등의 숫자 연산을 수행하는 프로그램을 만들려면 두 단계의 작업이 필요하다.

1) 데이터(숫자) 입력받기.

2) 입력받은 데이터로 연산을 수행하여 출력하기.

 

먼저 데이터를 입력받을 때 자바에서는 크게 두 가지 방법이 있는데, 간단한 프로그램에서는 자바 라이브러리에 미리 정의된 Scanner 라는 클래스를 사용한다. 이를 위해 Scanner 클래스가 저장되어있는 util 패키지를 import해주어야 한다.

import java.util.*;

라인 맨 끝의 * 표시는 util 패키지에 있는 '모든' 클래스를 임포트(import)한다는 의미이다. 해당 패키지 내 다양한 클래스가 미리 정의되어 있기 때문에, 여러 줄의 선언 없이 한 줄로도 여러 클래스를 활용할 수 있도록 편의 상 패키지 전체를 임포트한다. 만약 Scanner 클래스만 임포트하고 싶다면 아래와 같이 임포트를 원하는 클래스를 특정해도 된다.

import java.util.Scanner;

 

클래스를 임포트했다면, 해당 클래스를 활용하기 위해 클래스의 객체를 생성해야 한다. 생성 방법은 다음과 같다. 

Scanner sc = new Scanner(System.in);

짧게 설명하면, Scanner 클래스 타입의 sc라는 변수를 선언하고, new 연산자를 이용해 새로운 Scanner 객체를 생성한 후 변수 sc가 이를 가리키도록 하는 과정이다. 따라서 이 변수를 통해 생성된 객체에 접근이 가능하다. 여기서 sc는 변수의 이름일 뿐이기 때문에 a, b, scan 등 어떤 이름을 사용해도 상관 없다. 

괄호 안에는 입력값을 읽어올 장소(출처)를 명시해줄 수 있는데, 파일, 변수, 콘솔 등 다양한 입력 방식이 있지만 여기서는 사용자에게 직접 입력을 받아 올 예정이므로 System.in을 사용한다. 일반적으로 키보드로 콘솔을 통해 입력값을 전달할 때는 System.in을 사용하면 된다.

 

Scanner의 객체까지 생성했으니, 이제 변수 sc를 통해 Scanner 클래스 내에 정의된 다양한 메소드(함수)들을 이용하여 입력된 데이터를 읽어올 수 있다. 이에 활용되는 대표적인 메소드는 다음과 같다.

메소드

용법

next()

토큰을 String 타입으로 읽어온다. (공백 라인은 무시됨)

nextLine()

줄 전체를 String 타입으로 읽어온다.

nextByte(), nextInt(), nextDouble(), nextFloat() ...

토큰을 Byte, Int, Double Float 등의 타입으로 읽어온다.

hasNext(), hasNextInt(), hasNextByte() ...

남은 입력값이 있는지 여부를 Boolean 타입으로 반환한다.

 

nextInt() 또는 nextDouble(), nextFloat() 등을 통해 숫자를 읽어온 후, 각 숫자를 변수에 저장해 연산을 수행할 수 있다. 아래는 두 개의 숫자를 읽어와 각각 변수 a와 b에 저장하고 덧셈, 뺄셈, 나눗셈, 곱셈, 나머지 계산을 수행하는 코드이다.

int a = sc.nextInt();		//이런 식으로 변수 sc를 통해 Scanner 클래스의 메소드들에 접근한다.
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);	//나머지

 

 

 

< 백준 1000번 A+B 덧셈 정답 코드 >

import java.util.*; 

class Main{ 
    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); 
    } 
}

 

< 백준 1001번 A-B 뺄셈, 10998번 A×B 곱셈 정답 코드 >

위에서 a+b 대신 a-b, a*b를 사용하면 되므로 전체 코드는 생략한다.

 

< 백준 1008번 A/B 나눗셈 정답 코드 >

정수의 나눗셈이지만 결과값으로 실수가 나오는 경우를 고려해야 하기 때문에, 변수를 int형이 아닌 double 형으로 선언해야 한다.

import java.util.*;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        double a = sc.nextDouble();	//nextInt()를 사용해도 double로 자동 형변환이 되어 문제가 없다.
        double b = sc.nextDouble();
        System.out.println(a/b);
    }
}

 

< 백준 10869번 사칙연산 정답 코드 >

import java.util.*;

class Main{
    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);
    }
}

 

< 백준 10430번 나머지 정답 코드 >

import java.util.*;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int A = sc.nextInt();
        int B = sc.nextInt();
        int C = sc.nextInt();
        
        System.out.println((A+B)%C);
        System.out.println((A%C + B%C)%C);
        System.out.println((A*B)%C);
        
        System.out.println((A%C * B%C)%C);
    }
}

 

< 백준 2588 곱셈 정답 코드 >

import java.util.*;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        
        int one = b%10;
        int ten = (b%100-one)/10;
        int hun = (b-ten*10-one)/100;
        
        System.out.println(a*one);
        System.out.println(a*ten);
        System.out.println(a*hun);
        
        System.out.println(a*b);
    }
}