어떤 프로그래밍 언어이든 덧셈, 나눗셈 등의 숫자 연산을 수행하는 프로그램을 만들려면 두 단계의 작업이 필요하다.
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);
}
}
'JAVA' 카테고리의 다른 글
자바 윤년 계산 알고리즘 (백준 2753번 윤년 코드) (0) | 2020.03.28 |
---|---|
자바 조건문 기본 문법 - if문 (백준 1330번, 2884번) (0) | 2020.03.17 |
자바 특수문자, 괄호, 백슬래시, 따옴표 출력하기 (백준 10171, 10172번) (2) | 2020.03.01 |
자바 개행(줄바꿈) 하는 방법 (백준 10718번) (0) | 2020.02.28 |
자바 Hello World 출력하기 (백준 2557번) (0) | 2020.02.28 |