
[Must Have] 이재환의 자바 프로그래밍 입문 책을 읽고 정리한 글입니다.
💡 학습 목표
지금까지 배운 모든 내용을 적용해서 계산기 만드는 프로그램을 만들어보자.
클래스를 하나 만들어 선택할 수 있는 메뉴를 보여주는 기능을 메서드로 만들어준다.
import java.util.Scanner;
public class MyCalculator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
showMenu();
}
private static void showMenu() {
System.out.println("메뉴를 선택하세요.");
System.out.println("1. 더하기");
System.out.println("2. 빼기");
System.out.println("3. 곱하기");
System.out.println("4. 나누기");
System.out.println("0. 끝내기");
}
}
while문을 이용하여 메뉴가 계속해서 출력되어 사용자 입력을 처리할 수 있도록 만들어준다.
while(true) {
showMenu();
int num = sc.nextInt();
if(num == 0) { // 입력받은 값이 0이면 반복문 종료
break;
}
else {
// 입력받은 값이 0이 아닐때 실행
if(num > 4) { // 메뉴에 없는 다른 번호 입력시 실행
System.out.println("잘못된 메뉴를 선택했습니다.");
continue;
}
}
}
System.out.println("===계산기를 종료합니다.===");
사칙연산 메뉴 선택

없는 메뉴 선책

종료 메뉴 선택

메뉴 기능을 메서드로 만들어 추가한다.
public static void showMenu()
{...}
public static void addNum(int num1, int num2) {
int result = num1 + num2;
System.out.println(num1 + " + " + num2 + " = " + result);
}
public static void numsNum(int num1, int num2) {
int result = num1 - num2;
System.out.println(num1 + " - " + num2 + " = " + result);
}
public static void multipyNum(int num1, int num2) {
int result = num1 * num2;
System.out.println(num1 + " * " + num2 + " = " + result);
}
public static void divideNum(int num1, int num2) {
int result1 = num1 / num2;
System.out.println(num1 + " / " + num2 + " = " + result1);
int result2 = num1 % num2;
System.out.println(num1 + " % " + num2 + " = " + result2);
}
System.out.println("첫 번째 숫자 : ");
int num1 = sc.nextInt();
System.out.println("두 번째 숫자 : ");
int num2 = sc.nextInt();
if(num == 1)
addNum(num1, num2);
else if(num == 2)
minsNum(num1, num2);
else if(num == 3)
multiplyNum(num1, num2);
else if(num == 4)
divideNum(num1, num2);
사용자의 입력이 숫자가 아닐 경우를 체크해본다. checkNum()메서드를 코드 맨 뒤에 추가한다.
public static boolean checkNum(char ch)
{
if(ch >= '0' && ch <= '9') {
return true;
}
else {
return false;
}
}
char형 데이터를 매개변수로 받아 숫자 0에서 9 사이의 값인지 확인하고 숫자라면 true를 반환, 숫자가 아니면 false를 반환한다.
입력받는 부분을 수정한 총 코드이다.
package Chapter08;
import java.util.Scanner;
public class MyCalculator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true) {
showMenu();
char myChar = sc.nextLine().charAt(0);
if(!checkNum(myChar)) {
System.out.println("메뉴를 잘못 선택했습니다.");
continue;
}
int num = myChar - '0';
System.out.println(num);
if(num == 0) {
break;
}
else {
if(num > 4) {
System.out.println("잘못된 메뉴를 선택했습니다.");
continue;
}
System.out.println("첫 번째 숫자 : ");
int num1 = sc.nextInt();
System.out.println("두 번째 숫자 : ");
int num2 = sc.nextInt();
if(num == 1)
addNum(num1, num2);
else if(num == 2)
minsNum(num1, num2);
else if(num == 3)
multiplyNum(num1, num2);
else if(num == 4)
divideNum(num1, num2);
}
}
System.out.println("===계산기를 종료합니다.===");
sc.close();
}
private static void showMenu() {
System.out.println("메뉴를 선택하세요.");
System.out.println("1. 더하기");
System.out.println("2. 빼기");
System.out.println("3. 곱하기");
System.out.println("4. 나누기");
System.out.println("0. 끝내기");
}
public static void addNum(int num1, int num2) {
int result = num1 + num2;
System.out.println(num1 + " + " + num2 + " = " + result);
}
public static void minsNum(int num1, int num2) {
int result = num1 - num2;
System.out.println(num1 + " - " + num2 + " = " + result);
}
public static void multiplyNum(int num1, int num2) {
int result = num1 * num2;
System.out.println(num1 + " * " + num2 + " = " + result);
}
public static void divideNum(int num1, int num2) {
int result1 = num1 / num2;
System.out.println(num1 + " / " + num2 + " = " + result1);
int result2 = num1 % num2;
System.out.println(num1 + " % " + num2 + " = " + result2);
}
public static boolean checkNum(char ch)
{
if(ch >= '0' && ch <= '9') {
return true;
}
else {
return false;
}
}
}